JavaScript: проверка переменных на неопределенное значение;проверка, является ли объект массивом - PullRequest
4 голосов
/ 15 мая 2011
  1. Есть ли разница между typeof value === "undefined" и value === undefined?

  2. Почему JavaScript нуждался в Array.isArray() в ECMAScript 5?Разве я не могу просто вызвать value instanceof Array, чтобы определить, является ли данная переменная массивом?

1 Ответ

7 голосов
/ 15 мая 2011
//var value; There is no var declaration. The variable was never declared

// check againts undeclared variables
typeof value === "undefined"; // works

// check againts declared variables with no value
value === undefined; // ReferenceError: value is not defined

Есть также проблемы с действительностью undefined = true. Но тебя это не волнует. Никто не настолько глуп, чтобы изменить undefined глобально в наши дни.

Я также знаю о багах с instanceof, которые были сломаны. Я не могу дать вам точную причину, почему Array.isArray лучше.

Вы найдете критику на instanceof в JavaScript Garden

Если вы читаете эту статью Там упоминается, как instanceof не работает в отдельных фреймах / окнах / фреймах.

Потому что instanceof проверяет снова Array, и у каждого окна есть свой window.Array.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...