непонятно про приведение null к boolean
Всем привет.
В учебнике по JS на этом сайте я прочитал, что при приведении null к boolean, его значением будет false. Однако, когда у меня есть переменная со значением null, то все происходит наоборот. if (null) { window.alert("null is false"); // этот код не отработает } var name = null; if (name) { window.alert("name is true"); // этот код всегда вызывается } Можете мне объяснить, почему так происходит? |
nasqad,
я скопировал его код и запустил, у меня сработало второе условие, проверь свой лисобраузер. |
Вторая часть кода сработает в Safari и Google Chrome
|
так только из-за некоторых имен переменных, напримерн свойство name есть у window. В хроме при установке ему значения оно переводит значение в строку.
var nil = null; var name = nil; alert( typeof nil + "\n" + typeof name ); |
млять точно вспомнил же, я в свое времяо со статусом так ибался.
но почему так? почему они зарезервиловали переменную name а меня не предупредили? спецификация запрещяет использование name в глобальном контексте? - нет! какого хрена они такое вытваряют?? и как я должен был узнать? если делают извращения, то пусть будут добры делать их обратносовместными! |
Действительно, все дело в имени переменной.
Этот скрипт работает как я и ожидаю. var xxx = null; if (xxx) { window.alert("name is true"); // этот код не вызывается } |
|
Aetae,
у лисы имя окна можно приравнять в null? |
Да. ФФ просто не заморачивается: если ты так сделал, знач тебе так надо, а думать за кодера и приводить к значение к строке фф не будет. И правильно, имхо.
|
Часовой пояс GMT +3, время: 17:10. |