Underscore.js, warum verwendet `isFunction`` || false`?
Die optionale Überschreibung fürisFunction(object)
in Underscore.js repo Link zur Definition) lautet wie folgt:
// 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 verwirrt bin, ist das|| false
, warum ist das nach einem Stringvergleich nötig? Schon seittypeof
gibt immer einen String zurück, bei dem es keine Mehrdeutigkeit geben sollte?
Der Kommentar besagt, dass das Überschreiben einige @ behetypeof
Bugs, gibt es Fälle auf den aufgelisteten Plattformen, wenntypeof
gibt keinen String zurück?