Показать сообщение отдельно
  #4 (permalink)  
Старый 15.07.2012, 17:57
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от oneguy
Ответ неверный. Операнд оператора ++ должен быть такой, который может стоять в левой части присваивания, то есть либо переменной, либо свойством объекта. У вас там строка, поэтому генерируется SyntaxError.
Можно пояснить, как получить такой вывод из спецификации


http://es5.javascript.ru/x11.html#x11.3.1
Цитата:
11.3.1 Постфиксный оператор инкремента # Ⓣ Ⓡ Ⓖ
Для вычисления PostfixExpression : LeftHandSideExpression [no LineTerminator here] ++ выполняются следующие шаги:

Пусть lhs будет результатом вычисления LeftHandSideExpression Левостороннее выражение.
Сгенерировать исключение SyntaxError, если все следующие условия являются истинными:
Type(lhs) равно Reference равно true
IsStrictReference(lhs) равно true
Type(GetBase(lhs)) равно Environment Record
GetReferencedName(lhs) равно либо "eval", либо "arguments"
Пусть oldValue Старое значение будет ToNumber(GetValue(lhs)).
Пусть newValue Новое значение будет результатом прибавления значения 1 к значению oldValue, с применением таких же правил, что и для оператора + (см. пункт. 11.6.3).
Вызвать PutValue(lhs, newValue).
Вернуть oldValue.
Ответить с цитированием