Это похоже на ряд других вопросов по SO, но не совсем то же самое, что я могу найти.Должен ли я использовать (typeof (val) === 'undefined') или (val === undefined)?
Каков наилучший подход для проверки неопределенного значения в Javascript и почему?
Первый пример:
var a;
if (typeof(a) === 'undefined'){...}
Второй пример:
var a;
if (a === undefined){...}
Итак, первый пример сравнения имя типа в строку, а второй сравнивает переменную неопределенное объект, используя оператор равенства, который проверяет, что типы такие же, как и значения.
Что лучше? Или они оба хороши друг другу?
Обратите внимание, что я не спрашиваю о какой-либо разнице между неопределенным и нулевым, или правдивым или ложным, только тот из этих двух методов является правильным и/или лучше.
Afaik они такие же, если вы либо создали свой собственный локальный 'undefined', либо можете доверить, что ни один идиот не переопределит его на' true' или что-то еще. – Amadan
'typeof' не является функцией. Вам не нужны парнеры. –
Первый метод более безопасен, потому что (A) вам не нужно беспокоиться, действительно ли переменная 'undefined' содержит значение' undefined', и (B) вам не нужно беспокоиться о контрольных ошибках в случае, если ваш операнд оказывается незаявленной. –