Я думаю, оба, в зависимости от того, что вы тестируете? Если это свойство, я всегда буду использовать x === undefined
, так как он яснее (и, похоже, быстрее).
Как и другие, x === undefined
не будет работать, если x не объявлен. Лично я считаю, что это еще лучшая причина для его использования, поскольку обычно я не должен проверять, объявлена ли вообще переменная - это обычно является признаком ошибки кодирования.
Я видел много другой версии для тестирования аргументов - f = function(x) {if (typeof x == 'undefined') …}
- если я код кода, как это, я скажу им, чтобы изменить его.Мы знаем, что переменная объявлена, и привычка писать ее таким образом увеличивает вероятность того, что вы будете тратить время на то, чтобы преследовать ошибки опечатки.
Основное исключение - когда вы пытаетесь проверить, правильно ли загружен или инициализирован компонент или библиотека. if (typeof jQuery == 'undefined') …
имеет смысл. Но в среднесрочной перспективе все это должно стать модулем в любом случае, и в этом случае тест типа должен, по-моему, быть поэтапным, как вредный.
(Кроме того, лично я предпочитаю if (window.jQuery === undefined)
для этого случая тоже. Это не портативный для изоморфного кода, хотя.)
возможно дубликат [Обнаружение неопределенного свойства объекта] (http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property) – Anatoli