Javascript! Instanceof If Statement
Это действительно основной вопрос, действительно, чтобы удовлетворить мое любопытство, но есть ли способ сделать что-то вроде этого:
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
Ключевым моментом здесь является возможность использования NOT! перед экземпляром. Обычно способ, которым я должен установить это, выглядит следующим образом:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
И его немного раздражает, чтобы создать инструкцию else, когда я просто хочу знать, является ли объект конкретным типом.
Ответы
Ответ 1
Заключите в скобки и отрицайте снаружи.
if(!(obj instanceof Array)) {
//...
}
В этом случае важен порядок приоритета (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence). ! Оператор предшествует оператору instanceof.
Ответ 2
if (!(obj instanceof Array)) {
// do something
}
Правильный способ проверить это - как уже ответили другие. Другие две тактики, которые были предложены, не будут работать и должны быть поняты...
В случае оператора !
без скобок.
if (!obj instanceof Array) {
// do something
}
В этом случае важна последовательность приоритетов (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence). Оператор !
предшествует оператору instanceof
. Итак, !obj
сначала оценивается до false
(это эквивалентно ! Boolean(obj)
); то вы проверяете, является ли false instanceof Array
, что явно отрицательно.
В случае оператора !
перед оператором instanceof
.
if (obj !instanceof Array) {
// do something
}
Это синтаксическая ошибка. Операторы, такие как !=
, являются одним оператором, в отличие от NOT, примененного к EQUALS. Нет такого оператора, как !instanceof
так же, как нет оператора !<
.
Ответ 3
Легко забыть скобки (скобки), чтобы вы могли сделать привычку:
if(obj instanceof Array === false) {
//The object is not an instance of Array
}
или
if(false === obj instanceof Array) {
//The object is not an instance of Array
}
Попробуйте здесь