Должен ли я использовать typeof в равенстве типов Javascript? - PullRequest
4 голосов
/ 26 июня 2011

Что лучше?

if (obj === undefined) { }

против

if (typeof(obj) === 'undefined') { }

Ответы [ 3 ]

4 голосов
/ 26 июня 2011

Если вы как-то не можете удержаться от затенения глобальных undefined или не можете удержаться от попыток ссылаться на необъявленные переменные, используйте:

typeof x === 'undefined'

Если вы придерживаетесь хороших методов кодирования,и верьте в возможность сломанного кода, используйте:

x === undefined

Если вы хотите другую альтернативу, вы можете использовать:

x === void 0;

... где void всегда возвращает undefined и не полагается на глобальное свойство.

Еще одна мера предосторожности, которую вы можете использовать, - это хорошее использование теней путем определения правильного undefined в функции:

(function( undefined ) {

    // notice that no arguments were passed, 
    // so the `undefined` parameter will be `undefined`

    var x; 

    if( x === undefined ) {

    }

})();

... некоторые люди предпочитают давать ему другое имя:

(function( undef ) {

    // notice that no arguments were passed, 
    // so the `undefined` parameter will be `undefined`

    var x; 

    if( x === undef ) {

    }

})();
1 голос
/ 26 июня 2011

Я бы пошел со вторым, так как "undefined" не является зарезервированным словом.Пример:

var obj = undefined;
undefined = {};

if(obj === undefined) {
    console.log("undefined 1");   
}

if(typeof obj === 'undefined') {
    console.log("undefined 2");   
}

Будет отображаться только «undefined 2», поскольку переменная undefined может быть изменена.

0 голосов
/ 26 июня 2011

Это было задано ранее, но более распространенный подход заключается в следующем:

     typeof(x) == 'undefined'

См .: JavaScript: undefined! == undefined?

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