C’est une question très fondamentale qui ne fait que satisfaire ma curiosité, mais existe-t-il un moyen de faire quelque chose comme ceci:
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
La clé ici étant capable d'utiliser le NOT! devant l'instance. Habituellement, la façon dont je dois configurer ceci est la suivante:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
Et c'est un peu ennuyeux de devoir créer une autre instruction quand je veux simplement savoir si l'objet est d'un type spécifique.
Placez entre parenthèses et niez à l'extérieur.
if(!(obj instanceof Array)) {
//...
}
Dans ce cas, l'ordre de priorité est important ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ). Le ! l'opérateur précède l'opérateur instanceof.
if (!(obj instanceof Array)) {
// do something
}
Est-ce la bonne façon de vérifier cela - comme d'autres ont déjà répondu. Les deux autres tactiques suggérées ne fonctionneront pas et devraient être comprises ...
Dans le cas de l'opérateur !
Sans crochets.
if (!obj instanceof Array) {
// do something
}
Dans ce cas, l'ordre de priorité est important ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ). L'opérateur !
Précède l'opérateur instanceof
. Donc, !obj
A été évalué à false
first (cela équivaut à ! Boolean(obj)
); alors vous testez si false instanceof Array
, ce qui est évidemment négatif.
Dans le cas de l'opérateur !
Avant l'opérateur instanceof
.
if (obj !instanceof Array) {
// do something
}
C'est une erreur de syntaxe. Les opérateurs tels que !=
Sont un seul opérateur, par opposition à un NON appliqué à un EQUALS. Il n'y a pas d'opérateur tel que !instanceof
De la même manière qu'il n'y a pas d'opérateur !<
.
Il est facile d’oublier les parenthèses (crochets) pour pouvoir prendre l’habitude de faire:
if(obj instanceof Array === false) {
//The object is not an instance of Array
}
ou
if(false === obj instanceof Array) {
//The object is not an instance of Array
}
Essayez-le ici