Я хотел бы опубликовать важную информацию о undefined
, которую новички могут не знать.
Посмотрите на следующий код:
/*
* Consider there is no code above.
* The browser runs these lines only.
*/
// var a;
// --- commented out to point that we've forgotten to declare `a` variable
if ( a === undefined ) {
alert('Not defined');
} else {
alert('Defined: ' + a);
}
alert('Doing important job below');
Если вы запустите этот код, где переменная a
НИКОГДА НЕ БЫЛА ЗАЯВЛЕНА с помощью var
,
вы получите ИСКЛЮЧЕНИЕ ОШИБКИ и неожиданно вообще не увидите оповещений.
Вместо 'Выполнение важной работы ниже' ваш сценарий будет ПРЕКРАТИТЬ НЕОБХОДИМЫЙ, создавая необработанное исключение в самой первой строке.
Вот единственный пуленепробиваемый способ проверки undefined
с использованием ключевого слова typeof
, который был разработан именно для этой цели:
/*
* Correct and safe way of checking for `undefined`:
*/
if ( typeof a === 'undefined' ) {
alert(
'The variable is not declared in this scope, \n' +
'or you are pointing to unexisting property, \n' +
'or no value has been set yet to the variable, \n' +
'or the value set was `undefined`. \n' +
'(two last cases are equivalent, don\'t worry if it blows out your mind.'
);
}
/*
* Use `typeof` for checking things like that
*/
Этот метод работает во всех возможных случаях.
Последний аргумент, который следует использовать, это то, что undefined
может быть потенциально перезаписано в более ранних версиях Javascript:
/* @ Trollface @ */
undefined = 2;
/* Happy debuging! */
Надеюсь, я был достаточно ясен.