Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.03.2010, 00:17
Новичок на форуме
Отправить личное сообщение для SuBwooFer Посмотреть профиль Найти все сообщения от SuBwooFer
 
Регистрация: 04.04.2009
Сообщений: 2

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

Последний раз редактировалось SuBwooFer, 02.03.2010 в 00:19.
Ответить с цитированием
  #2 (permalink)  
Старый 02.03.2010, 09:09
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

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

И имя для переменной наверное смени, а то какое то оно сильно знакомое, а в js с этим тоже приколы.
Ответить с цитированием
  #3 (permalink)  
Старый 02.03.2010, 09:28
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от 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

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

Последний раз редактировалось Octane, 02.03.2010 в 09:39.
Ответить с цитированием
  #4 (permalink)  
Старый 02.03.2010, 09:36
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Сообщение от Octane Посмотреть сообщение
null — это не объект.
Я ж поэтому и взял в кавычки, что несмотря вот на это:
alert(typeof null);

не считаю null объектом.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работать с dojo.xhrGet() vadimas Dojo toolkit 3 13.10.2011 18:07
как заставить jQuery работать с переменными gooody jQuery 1 19.02.2010 13:10
Как работать со startContainer, endContainer и подобным? Бобр Общие вопросы Javascript 6 06.02.2010 20:47
Как заставить работать оперу и мозилу? SDone AJAX и COMET 6 25.02.2009 16:05
как работать только с областью... ALIENka Общие вопросы Javascript 2 06.10.2008 09:19