Pull to refresh

Comments 22

Надо добавить пункт «Я заметил, кто автор топика»
вам не нужно знать значение переменной undefined. Вам нужно проверить некую другую переменную,
var a;
typeof(a) == "undefined"; //true

и заметьте, тут переменная undefined нигде не используется.
Мицгол имеет в виду «зануление» ставшей ненужной переменной.
Я считаю что использование неопределённого значения есть зло, и лучше его совсем не передавать. Обычно я обхожусь null и он меня во всём устраивает.
wtfjs.com/ если всё прочитать и осознать то ничего неожиданного не остаётся. Для желающих изучить всё это советую изучение адобовской avm2 (которая соответствует ECMA-262-3 и имеет прекрасную доку) и чтение официального стандарта.
судя по вопросу, автор «не пишет на языке JavaScript» :)
теперь, когда вопрос поправлен, верхний комментарий стал нетактичным
Не понимаю, о чём Вы. На Хабрахабре в принципе нельзя править вопросы.
Я извиняюсь. Видимо, мне показлось не то, что есть, правильно меня наказывают, значит.
Понедельник…
Я ничо не понял.
Зачем делать проверку typeof undefined == 'undefined'?
Затем что она может вернуть false.
Undefined это вполне себе обычная переменная, доступная на запись. Туда можно присвоить например true и почти у всего кода напрочь сорвёт крышу.
но зачем мне нужна такая «проблемная» переменная?
Проблема в том что такая переменная никому не нужна, но может быть. Вы не один код пишете. Есть и другие разработчики, автогенерённый код. Такое может произойти. Мицгол спрашивает кто, что делает, чтобы в случае если это произойдёт, их код нормально работал.
Все равно не понятно.
Если я использую такую переменную то я в курсе о ее существовании и такая проверка мне не потребуется так как ее результат всегда будет false.
Если я не использую такую переменную то такая проверка мне тоже не понадобится так как зачем мне проверять переменную которую я не использую?
Командная разработка, кто-то (не вы) определяет undefinded как некое значение, вы об этом не знаете, но пишете код, где так или иначе эта переменная появляется с этим значением. Что делать?
Ну во первых, неймспейсы.
Во вторых я все таки не понимаю какой сайд-эффектможет возникнуть.
Приведите плиз пример кода который
1) Не использует переменную undefined (явно)
2) работает по разному в зависимости от того определена эта переменная или нет в этой области видимости
У меня как-то undefined переопределился без моего ведома — оттого, что я в условии if написал присвоение (=) вместо сравнения (==).
Гм
Если вы хотите очистить память таким способом, то не надо: куда как лучше дать сборщику мусора выполнить свою работу и очистить память тогда, когда это действительно необходимо.
Если же такого поведения требует бизнес-логика, то лучше воспользоваться оператором 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.

Articles