Почему оператор ++ генерирует искючение, а не NaN в случае со строкой?
Почему код:
alert('d'++); генерирует ошибку, а не выводит значение NaN? |
dump,
потому что не совмещение типов вроде. Другие знаки приводят операнды к одному типу: alert('a' + 1) alert('a' * 1) alert('a' - 1) alert('a' / 1) |
Цитата:
Этот код работает: var a='d'; alert(a++); //NaN |
Цитата:
http://es5.javascript.ru/x11.html#x11.3.1 Цитата:
|
Цитата:
Дальше читаем: http://es5.javascript.ru/x16.html#x16 Цитата:
|
Спасибо за пояснение, то есть ошибка возникает не из этих пунктов
Цитата:
Цитата:
Цитата:
(исходя из приведённых пояснений, если бы строковый литерал был ссылкой, тогда ошибка возникла бы ещё на пункте Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
хотелось бы понять, как по спецификации определить, что ссылочного типа, что нет (где-то это должно быть в спецификации обозначено, а в http://es5.javascript.ru/x8.html#x8.7 не совсем понятно об этом написано) |
Цитата:
Type(lhs) равно Reference равно true IsStrictReference(lhs) равно true Type(GetBase(lhs)) равно Environment Record GetReferencedName(lhs) равно либо "eval", либо "arguments" Цитата:
|
Цитата:
Цитата:
Алгоритм выполняется последовательно, поэтому пытаемся разобрать фразу Type(lhs) равно Reference равно true: Type(lhs) Цитата:
далее этот тип сравнивается с типом Reference собственно о Reference http://es5.javascript.ru/x8.html#x8.7 Цитата:
|
Часовой пояс GMT +3, время: 13:04. |