Для «проверить, если не определено», лучшее решение, как правило, третья:
Demo
function isDef(obj) {
var undefined;
return obj === undefined;
}
Проверяется, если объект не определен, не теряя времени с typeof
и этот тест Безразлично 't утверждать как истину с ""
, null
, NaN
или 0
как и ваш второй тест.
Единственная ошибка заключается в том, что кто-то может переопределить глобальный объект undefined
. Невозможно в строгом режиме ES5, но ваш код должен защищаться от этого. Shadowing undefined
с локальным определением var undefined;
делает это для вас.
Также, используя функцию isDef
, вы позволяете лучше переносить миниатюру и более простую логику.
if (isDef(x)) {
// do something
} else {
// do something else
};
Ответ: «Это зависит от того, что именно вы пытаетесь сделать». – karim79
«Действительно проверить, не определено» ... вы имеете в виду это, или вы имеете в виду «неопределенный или нулевой», поскольку вы также проверяете значение null в этих примерах. –
Свойство, если оно не имеет определения, не определено. Положите это, это довольно очевидно. null - объект. Это тип null. undefined не является объектом, его тип не определен. Эта часть менее очевидна. http://stackoverflow.com/questions/6429225/javascript-null-or-undefined –