Dies ist eine wirklich grundlegende Frage, um meine Neugier zu befriedigen, aber gibt es eine Möglichkeit, so etwas zu tun:
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
Der Schlüssel hier ist, das NOT! vor der Instanz. Normalerweise muss ich das so einstellen:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
Und es ist ein wenig ärgerlich, eine else-Anweisung erstellen zu müssen, wenn ich einfach wissen möchte, ob das Objekt ein bestimmter Typ ist.
javascript
instanceof
ryandlf
quelle
quelle
!! obj instanceof Array
gibt false (falsch) zurück, während!!(obj instanceof Array)
true (korrekt) zurückgegeben wirdIn this case, the order of precedence is important (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence). The ! operator precedes the instanceof operator.
Ihrer Antwort so etwas hinzufügen ?Ist der richtige Weg, dies zu überprüfen - wie andere bereits geantwortet haben. Die beiden anderen vorgeschlagenen Taktiken funktionieren nicht und sollten verstanden werden ...
Im Falle des
!
Bedieners ohne Klammern.In diesem Fall ist die Rangfolge wichtig ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ). Der
!
Operator steht vor deminstanceof
Operator. Also zuerst!obj
bewertetfalse
(es ist äquivalent zu! Boolean(obj)
); dann testest du obfalse instanceof Array
das was offensichtlich negativ ist.Im Falle des
!
Bedieners vor deminstanceof
Bediener.Dies ist ein Syntaxfehler. Operatoren wie
!=
ein einzelner Operator im Gegensatz zu einem NICHT auf EQUALS angewendeten Operator. Es gibt keinen solchen Operator!instanceof
wie es keinen!<
Operator gibt.quelle
Es ist leicht, die Klammern (Klammern) zu vergessen, damit Sie es sich zur Gewohnheit machen können:
oder
Probieren Sie es hier aus
quelle