Comments 22
Надо добавить пункт «Я заметил, кто автор топика»
вам не нужно знать значение переменной undefined. Вам нужно проверить некую другую переменную,
и заметьте, тут переменная undefined нигде не используется.
var a;
typeof(a) == "undefined"; //true
и заметьте, тут переменная undefined нигде не используется.
wtfjs.com/ если всё прочитать и осознать то ничего неожиданного не остаётся. Для желающих изучить всё это советую изучение адобовской avm2 (которая соответствует ECMA-262-3 и имеет прекрасную доку) и чтение официального стандарта.
судя по вопросу, автор «не пишет на языке JavaScript» :)
Замыкания.
Я ничо не понял.
Зачем делать проверку typeof undefined == 'undefined'?
Зачем делать проверку typeof undefined == 'undefined'?
Затем что она может вернуть false.
Undefined это вполне себе обычная переменная, доступная на запись. Туда можно присвоить например true и почти у всего кода напрочь сорвёт крышу.
Undefined это вполне себе обычная переменная, доступная на запись. Туда можно присвоить например true и почти у всего кода напрочь сорвёт крышу.
но зачем мне нужна такая «проблемная» переменная?
Проблема в том что такая переменная никому не нужна, но может быть. Вы не один код пишете. Есть и другие разработчики, автогенерённый код. Такое может произойти. Мицгол спрашивает кто, что делает, чтобы в случае если это произойдёт, их код нормально работал.
Все равно не понятно.
Если я использую такую переменную то я в курсе о ее существовании и такая проверка мне не потребуется так как ее результат всегда будет false.
Если я не использую такую переменную то такая проверка мне тоже не понадобится так как зачем мне проверять переменную которую я не использую?
Если я использую такую переменную то я в курсе о ее существовании и такая проверка мне не потребуется так как ее результат всегда будет false.
Если я не использую такую переменную то такая проверка мне тоже не понадобится так как зачем мне проверять переменную которую я не использую?
Командная разработка, кто-то (не вы) определяет undefinded как некое значение, вы об этом не знаете, но пишете код, где так или иначе эта переменная появляется с этим значением. Что делать?
У меня как-то
undefined
переопределился без моего ведома — оттого, что я в условии if
написал присвоение (=) вместо сравнения (==).Гм
Если вы хотите очистить память таким способом, то не надо: куда как лучше дать сборщику мусора выполнить свою работу и очистить память тогда, когда это действительно необходимо.
Если же такого поведения требует бизнес-логика, то лучше воспользоваться оператором delete, чем присваивать значение undefined.
Ну и напоследок: если вы действительно хотите быть уверенным, что undefined в вашем коде это именно undefined, оборачивайте свой код в такую конструкцию:
Если вы хотите очистить память таким способом, то не надо: куда как лучше дать сборщику мусора выполнить свою работу и очистить память тогда, когда это действительно необходимо.
Если же такого поведения требует бизнес-логика, то лучше воспользоваться оператором delete, чем присваивать значение undefined.
Ну и напоследок: если вы действительно хотите быть уверенным, что undefined в вашем коде это именно undefined, оборачивайте свой код в такую конструкцию:
(function (undefined) {
// Здесь вы можете быть совершенно точно уверенным, что undefined - это именно оно и есть
// и без разницы, переопределил ли его кто-нибудь на странице в своем коде.
if (typeof undefined === 'undefined') {
alert('it works!');
}
})()
В одном большом проекте, тянувшемся годами, я вешал обработчик
window.watch("underfined", function(){…})
, предупреждавший меня о таком изменении.Интересно, способ: «Найду того кто задал undefined и засуну ему undefined в его undefined» за решение считается???
В последнее время на Хабре не любят опросы… К чему бы это?
Sign up to leave a comment.
Равенство typeof undefined == 'undefined' не верно, если переменная «undefined» задана! И как быть?