непонятно про приведение 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, время: 06:51. |