тогда уж
if( '' ) alert('пустая строка'); if( new String('') ) alert('обьект-обертка'); правда непонятно, почему там упоминаются непустые объекты UPD: null похоже имеется в виду |
Цитата:
В книге дальше имеется таблица 3.3. Там все и описывается окончательно. Мне больше нравится творчество перевода в примере 15.5 и демонстрации картинки к нему. (стр 340) |
Спасибо вам как всегда :D
|
Гозар не понял вашего примера я и так знал что new String("") !== false;
|
Цитата:
Но зато с приведением - равно: if (new String('')==false) alert('равно') if (new String('1')==true) alert('равно') |
Запутался почему тогда
if( new String('') ) true |
Цитата:
Картинки просто местами перепутаны. Могу предположить, что не переводчиком, а издателем. |
Цитата:
http://javascript.ru/ecma/part9#a-9.2 А вообще, насколько я понял, почитав http://javascript.ru/ecma/part11#a-11.9.3, начиная с 16 пункта сравнения все превращается в числа. И потом сравниваются числа. Если ошибаюсь, поправьте меня. |
if (new String('')==false) alert('равно')
Ну а тут false то почему |
Цитата:
При сравнении объекта и логического выражения. Логическое false "превращается" в 0 Объект сначала "превращается" в ToPrimitive(object) Потом этот результат переходит в число ToNumber(ToPrimitive(object)) Видимо ToPrimitive(new String('')) -> "" ToNumber(ToPrimitive(new String(''))) = ToNumber("") -> 0 ToNumber(false) -> 0 0 === 0 Вот так я это вижу. |
Часовой пояс GMT +3, время: 03:42. |