тогда уж
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, время: 15:14. |