Die optionale Überschreibung für isFunction(object)
in Underscore.js (repo link to definition), lautet wie folgt:Underscore.js, warum verwendet 'isFunction' `|| falsch?
// Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,
// IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).
var nodelist = root.document && root.document.childNodes;
if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {
_.isFunction = function(obj) {
return typeof obj == 'function' || false;
};
}
Was ich bin verwirrt ist die || false
, warum es nach einem String-Vergleich notwendig ist? Da typeof
immer eine Zeichenfolge zurückgibt, sollte es keine Mehrdeutigkeit geben?
Der Kommentar besagt, die Überschreibung behebt einige typeof
Bugs, gibt es Fälle auf den aufgeführten Plattformen, wenn typeof
keine Zeichenfolge zurückgibt?