Показать сообщение отдельно
  #5 (permalink)  
Старый 15.07.2012, 21:40
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от bes
Можно пояснить, как получить такой вывод из спецификации
При вычислении LeftHandSideExpression [no LineTerminator here] ++ одним из шагом вычисляется PutValue(lhs, newValue). Операция PutValue кидает ReferenceError, если тип первого операнда не Reference.
Дальше читаем: http://es5.javascript.ru/x16.html#x16
Цитата:
Реализация должна рассматривать все случаи следующих ошибок как раннюю ошибку:

...

Попытки вызвать PutValue для значения, по которому можно заранее определить, что оно не является Reference (например, при выполнении инструкции присваивания 3=4).
В данном случае в выражении 'd'++ PutValue должен вызываться для значения выражения 'd', а строковый литерал никогда не возвращает Reference, поэтому интерпретатор при этом сообщает о ранней ошибке.
Ответить с цитированием