Skip to content

Instantly share code, notes, and snippets.

@Olegas
Last active April 18, 2019 16:36
Show Gist options
  • Select an option

  • Save Olegas/4106cca21bb2c6f1d8d4b8ff26157a0a to your computer and use it in GitHub Desktop.

Select an option

Save Olegas/4106cca21bb2c6f1d8d4b8ff26157a0a to your computer and use it in GitHub Desktop.
Объясню...

Комменатрий к ответу: "У нас есть серия выражений, сгруппированных и разделённых запятыми, они оцениваются слева направо, но сохраняется только результат последнего выражения."

Комментарий @Akiyamka: "Более того, выполняется только последнее"

Т.е. я трактовал это как: "У нас есть серия выражений, ..... они (выражения) оцениваются слева направо, ... Более того, выполняется только последнее (выражение)"

Выражения ни одно не выполняется. Они вычисляются, от каждого мы получаем результат. Далее, результаты "вычисления" выражений попадают в составное вырежение (то, которое с запятой) Оно тоже вычисляется и получается последняя его часть. Далее, к тому что получилось применяется "оператор скобки" и выполняется функция.

Т.е. если бы у нас было так:

var a = 1;
var x = (++a, function b() { console.log('100'); })()
console.log(a);

Мы увидим в консоли 100 и 2. А не 100 и 1. Потому что в процессе вычисления выражения (++a, function b() {...}) вычислились обе его части но в переменную x попал результат вычисления последнего (по счастливой случайности это оказалась функция).

Таким образом я считаю что не корректно использовать формулировку "выполняется только последнее (выражение)".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment