Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обьясните как работать с Boolean (https://javascript.ru/forum/misc/7988-obyasnite-kak-rabotat-s-boolean.html)

SuBwooFer 02.03.2010 00:17

Обьясните как работать с Boolean
 
Почему не работает данный код ?
window = new Boolean(false);
if(!window){
     alert('work');
}

micscr 02.03.2010 09:09

Это такой прикол в js.
Объект когда используется в контексте логического значения всегда приводится к истине. Если это не "объект" null. Т.е. объект Boolean(false) не будет играть той роли которую ты от него ожидаешь.
А вот зачем он вообще такой нужен я и сам только догадываюсь ...

И имя для переменной наверное смени, а то какое то оно сильно знакомое, а в js с этим тоже приколы.

Octane 02.03.2010 09:28

Цитата:

Сообщение от micscr
Если это не "объект" null.

null — это не объект.

Цитата:

Сообщение от micscr
Это такой прикол в js.

alert(typeof new Object());
alert(typeof new Array());
alert(typeof new Boolean(true));
alert(typeof new Number(true));

Все это объекты, почему поведение должно отличаться?
Точно так же не выполнится:
var a = new Number(0);

if (!a) {
    alert(1);
}

и
var a = new Object();

if (!a) {
    alert(1);
}


По спецификации логический оператор НЕ(!) возвращает false для Object:
http://javascript.ru/ecma/part11#a-11.4.9
http://javascript.ru/ecma/part9#a-9.2

Так что никаких приколов, все обосновано и описано ;)

micscr 02.03.2010 09:36

Цитата:

Сообщение от Octane (Сообщение 46500)

Я ж поэтому и взял в кавычки, что несмотря вот на это:
alert(typeof null);

не считаю null объектом.


Часовой пояс GMT +3, время: 09:29.