In meinem speziellen Fall:
callback instanceof Function
または
typeof callback == "function"
Spielt das überhaupt eine Rolle, was ist der Unterschied?
Zusätzliche Ressource:
JavaScript-Garten typeof gegen instanceof
In meinem speziellen Fall:
callback instanceof Function
または
typeof callback == "function"
Spielt das überhaupt eine Rolle, was ist der Unterschied?
Zusätzliche Ressource:
JavaScript-Garten typeof gegen instanceof
typeof : Gemäß der MDN-Dokumentation ist typeof ein unärer Operator, der eine Zeichenkette zurückgibt, die den Typ des nicht ausgewerteten Operanden angibt.
Im Fall von String-Primitiven und String-Objekten gibt typeof Folgendes zurück
const a = "I'm a string primitive";
const b = new String("I'm a String Object");
typeof a; --> returns 'string'
typeof b; --> returns 'object'
instanceof : ist ein binärer Operator, der ein Objekt und einen Konstruktor akzeptiert. Sie gibt einen booleschen Wert zurück, der angibt, ob das Objekt den angegebenen Konstruktor in seiner Prototypenkette hat oder nicht. .
Bei Anwendung auf die obigen String-Instanzen und im Vergleich zu String verhält es sich wie folgt:
const a = "I'm a string primitive";
const b = new String("I'm a String Object");
a instanceof String; --> returns false
b instanceof String; --> returns true
Referenz: https://bambielli.com/til/2017-06-18-typeof-vs-instanceof/
Andere Bedeutende praktische Unterschiede:
// Boolean
var str3 = true ;
alert(str3);
alert(str3 instanceof Boolean); // false: expect true
alert(typeof str3 == "boolean" ); // true
// Number
var str4 = 100 ;
alert(str4);
alert(str4 instanceof Number); // false: expect true
alert(typeof str4 == "number" ); // true
instanceof
in Javascript kann unzuverlässig sein - ich glaube, die meisten Frameworks versuchen, seine Verwendung zu vermeiden. Verschiedene Windows ist eine der Möglichkeiten, in denen es brechen kann - ich glaube, Klassenhierarchien können es auch verwirren.
Es gibt bessere Methoden, um zu prüfen, ob ein Objekt einem bestimmten eingebauten Typ entspricht (was in der Regel das ist, was Sie wollen). Erstellen Sie Hilfsfunktionen und verwenden Sie sie:
function isFunction(obj) {
return typeof(obj) == "function";
}
function isArray(obj) {
return typeof(obj) == "object"
&& typeof(obj.length) == "number"
&& isFunction(obj.push);
}
Und so weiter.
Wenn man nach einer Funktion sucht, muss man immer typeof
.
Hier ist der Unterschied:
var f = Object.create(Function);
console.log(f instanceof Function); //=> true
console.log(typeof f === 'function'); //=> false
f(); // throws TypeError: f is not a function
Aus diesem Grund darf man niemals instanceof
um nach einer Funktion zu suchen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.