Это действительно простой вопрос, чтобы удовлетворить мое любопытство, но есть ли способ сделать что-то вроде этого:
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
Ключ здесь в состоянии использовать НЕ! перед экземпляром. Обычно способ настроить это так:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
И немного раздражает необходимость создания оператора else, когда я просто хочу узнать, относится ли объект к определенному типу.
javascript
instanceof
ryandlf
источник
источник
!! obj instanceof Array
возвращает false (неверно), а!!(obj instanceof Array)
возвращает true (правильно)In 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.
к вашему ответу?Это правильный способ проверить это - как уже ответили другие. Две другие предложенные тактики не сработают и должны быть поняты ...
В случае
!
оператора без скобок.В этом случае важен порядок приоритета ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ).
!
Оператор предшествуетinstanceof
оператору. Таким образом,!obj
оценивается вfalse
первую очередь (это эквивалентно! Boolean(obj)
); тогда вы проверяетеfalse instanceof Array
, что, очевидно, отрицательно.В случае с
!
оператором передinstanceof
оператором.Это синтаксическая ошибка. Операторы, такие как
!=
являются одним оператором, в отличие от НЕ применяется к EQUALS. Нет такого оператора,!instanceof
как не существует!<
оператора.источник
Легко забыть скобки (скобки), чтобы вы могли сделать привычку делать:
или
Попробуй здесь
источник