24.11.2014, 21:58
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
bes,
Какой вопрос, я не люблю портянки читать. Сформулируй внятно и кратко.
|
|
24.11.2014, 22:22
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от krutoy
|
bes,
Какой вопрос, я не люблю портянки читать. Сформулируй внятно и кратко.
|
объясни почему этот код не работает, ориентируясь на алгоритм, описанный в спецификации
1++;
|
|
24.11.2014, 22:59
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
bes,
Нахрен мне сраная спецификация? Надо быть дебилом, чтобы не понимать, почему это не работает. Почему тогда это не работает
+++
А чо, пусть арифметическая операция инкрементируется, чем она хуже? Тебе, наверное, лекарство пора принять.
|
|
24.11.2014, 23:29
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от krutoy
|
bes,
Нахрен мне сраная спецификация? Надо быть дебилом, чтобы не понимать, почему это не работает.
|
ну да, дебилы, когда видят, что это не работает, не понимают, что это не работает,
иногда, правда, объяснить могут - не работает
Сообщение от krutoy
|
Почему тогда это не работает
+++
|
здесь возможно немного проще
http://es5.javascript.ru/x7.html#x7
Цитата:
|
Исходный текст программы на ECMAScript предварительно преобразуется в последовательность входных элементов, которые представляют собой токены, символы окончания строки, комментарии или пробельные символы. Исходный текст анализируется слева направо, каждый раз принимая максимально возможную последовательность символов за следующий входной элемент.
|
то есть +++ будет расценено как ++ (префиксный оператор инкремента) и символ +
http://es5.javascript.ru/x11.html#x11.4.4
Цитата:
|
Для выполнения UnaryExpression : ++ UnaryExpression выполняются следующие шаги:
|
http://es5.javascript.ru/x11.html#x11.4
Цитата:
|
UnaryExpression :
PostfixExpression
delete UnaryExpression
void UnaryExpression
typeof UnaryExpression
++ UnaryExpression
-- UnaryExpression
+ UnaryExpression
- UnaryExpression
~ UnaryExpression
! UnaryExpression
|
и далее куда ни пойди, + не является допустимым входным элементом, к которому будет применяться данная синтаксическая грамматика, поэтому транслятор сообщает о появлении синтаксической ошибки
|
|
24.11.2014, 23:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
подожду может кто-то обьяснит почему это не работает.
|
|
24.11.2014, 23:32
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от krutoy
|
А чо, пусть арифметическая операция инкрементируется, чем она хуже? Тебе, наверное, лекарство пора принять.
|
а чо бы и нет, пусть инкрементируется: a ++ b - два раза сложить а и b
|
|
25.11.2014, 00:15
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от bes
|
а чо бы и нет, пусть инкрементируется: a ++ b - два раза сложить
|
Нет, ты не понял. инкремент -- это деструктивная операция, она меняет свой операнд. твой вшивый пример не в кассу. Это означало бы, что оператор плюс отныне будет означать двойное сложение, если уж развивать этот бред.
|
|
25.11.2014, 08:23
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Токены-хуекины тут не стояли. Скалярное значение это не переменная. Запись 1++ означает абсурд, нонсенс, nonsense, бред укуренного стрептококка. Дизайн-тайм наезжает на рантайм и что вы лично bes предложили бы писателям интерпретатора чтобы развести этих братков?
Интерпретатор НЕ может менять исходный текст программы как ему там захочется. Если написано 1 - значит там написано 1, а ++ - идут в жопу, ибо это попытка принудить интерпретатор изменить исходник.
Конкретная реализация реакции интерпретатора на свое "нипонял" - вообще не колебет.
|
|
25.11.2014, 18:38
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от krutoy
|
Нет, ты не понял. инкремент -- это деструктивная операция, она меняет свой операнд. твой вшивый пример не в кассу. Это означало бы, что оператор плюс отныне будет означать двойное сложение, если уж развивать этот бред.
|
нет, ты снова не вкурил (инкремент --, который декремент, опустим):
можно писать всё, что угодно, лишь бы транслятор мог это выполнить, а ты понимал, к чему это приведёт,
как это всё будет интерпретироваться описано в спецификации, чтобы и другие это поняли также как и ты
хорошо, интуитивно вроде бы всем понятно, что 1++ работать не должно
кому не понятно, смотрит в консоль и убеждается - действительно, не работает
http://es5.javascript.ru/x11.html#x11.3.1
пункт 1 - описательный
числовой литерал в исходном тексте программы представляет собой неизменное значение и не создаёт ссылку (не типа Reference), поэтому пункт 2 проходим без проблем (было рассуждал на тему Точности перевода)
3, 4 - норма
затык на пункте 5
Цитата:
|
Вызвать PutValue(lhs, newValue).
|
http://es5.javascript.ru/x8.html#x8.7.2
Цитата:
|
1. Если Тип(V) не является Reference, сгенерировать исключение ReferenceError.
|
физический смысл простой: ++ в стакан может долить, а с закуски оно стекает
|
|
25.11.2014, 18:39
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Вопрос 2: откуда NaN?
var a = function () {};
a++;
alert(a);
|
|
|
|