Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 31.01.2010, 11:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

тогда уж
if( '' ) 
    alert('пустая строка');
if( new String('') ) 
    alert('обьект-обертка');

правда непонятно, почему там упоминаются непустые объекты
UPD: null похоже имеется в виду

Последний раз редактировалось x-yuri, 31.01.2010 в 11:08.
Ответить с цитированием
  #12 (permalink)  
Старый 31.01.2010, 12:07
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Сообщение от x-yuri Посмотреть сообщение
UPD: null похоже имеется в виду
Да походу про null хотя null не является объектным типом (несмотря на typeof(null))
В книге дальше имеется таблица 3.3. Там все и описывается окончательно.

Мне больше нравится творчество перевода в примере 15.5 и демонстрации картинки к нему. (стр 340)
Ответить с цитированием
  #13 (permalink)  
Старый 31.01.2010, 12:40
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Спасибо вам как всегда
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #14 (permalink)  
Старый 31.01.2010, 12:47
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Гозар не понял вашего примера я и так знал что new String("") !== false;
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 31.01.2010 в 12:52.
Ответить с цитированием
  #15 (permalink)  
Старый 31.01.2010, 12:58
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Сообщение от Niar Посмотреть сообщение
Гозар не понял вашего примера я и так знал что new String !== false
впрочем true оно тоже эквивалентно никак не равно. Т.к. одно это объект, а другое - значение логического типа.
Но зато с приведением - равно:
if (new String('')==false) alert('равно')

if (new String('1')==true) alert('равно')
Ответить с цитированием
  #16 (permalink)  
Старый 31.01.2010, 13:02
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Запутался почему тогда
if( new String('') ) true
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #17 (permalink)  
Старый 31.01.2010, 13:12
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Сообщение от micscr Посмотреть сообщение
Мне больше нравится творчество перевода в примере 15.5 и демонстрации картинки к нему. (стр 340)
А что там с переводом не так?
Картинки просто местами перепутаны. Могу предположить, что не переводчиком, а издателем.
Ответить с цитированием
  #18 (permalink)  
Старый 31.01.2010, 13:16
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Сообщение от Niar Посмотреть сообщение
Запутался почему тогда
if( new String('') ) true
Потому, что new String('') - это объект. Все объекты при преобразовании к логическому типу превращяются в true.
http://javascript.ru/ecma/part9#a-9.2


А вообще, насколько я понял, почитав http://javascript.ru/ecma/part11#a-11.9.3, начиная с 16 пункта сравнения все превращается в числа. И потом сравниваются числа. Если ошибаюсь, поправьте меня.

Последний раз редактировалось Мараторий, 31.01.2010 в 13:24.
Ответить с цитированием
  #19 (permalink)  
Старый 31.01.2010, 13:23
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

if (new String('')==false) alert('равно')
Ну а тут false то почему
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #20 (permalink)  
Старый 31.01.2010, 13:30
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Сообщение от Niar Посмотреть сообщение
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

Вот так я это вижу.
Ответить с цитированием
Ответ



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

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