Javascript! Instancia de declaración If
Esta es una pregunta realmente básica, solo para satisfacer mi curiosidad, pero ¿hay alguna manera de hacer algo como esto?
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
La clave aquí es poder utilizar NOT ! frente a la instancia. Por lo general, la forma en que tengo que configurar esto es la siguiente:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
Y es un poco molesto tener que crear una declaración else cuando simplemente quiero saber si el objeto es de un tipo específico.
Encierre entre paréntesis y niegue por fuera.
if(!(obj instanceof Array)) {
//...
}
En este caso, el orden de precedencia es importante. Ver: Precedencia de operadores .
El !
operador precede al instanceof
operador.
if (!(obj instanceof Array)) {
// do something
}
Es la forma correcta de comprobarlo, como ya han respondido otros. Las otras dos tácticas que se han sugerido no funcionarán y deben entenderse...
En el caso del !
operador sin corchetes.
if (!obj instanceof Array) {
// do something
}
En este caso, el orden de precedencia es importante ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ). El !
operador precede al instanceof
operador. Entonces, !obj
evaluado a false
primero (es equivalente a ! Boolean(obj)
); entonces estás probando si false instanceof Array
, lo cual obviamente es negativo.
En el caso del !
operador ante el instanceof
operador.
if (obj !instanceof Array) {
// do something
}
Este es un error de sintaxis. Los operadores como !=
son un operador único, a diferencia de un NO aplicado a un EQUALS. No existe tal operador de !instanceof
la misma manera que no existe ningún !<
operador.