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
, точно так же, как нет оператора !<
.