Почему оператор с более низким приоритетом в JavaScript выполняется первым? - PullRequest
0 голосов
/ 10 января 2019

Я запускаю строку кода, в которой есть вызов функции и console.log. Согласно таблице приоритетов, значение оператора вызова функции () равно 19, а оператор группировки имеет самый высокий приоритет (20). Итак, разве он не должен делать что-то внутри группировки первым?

function fn() {
  console.log("foo");
}

fn() + (console.log("bar"))

Это печатает foo в первой строке, а затем bar.

В то время как согласно это я должен увидеть:

bar

foo

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 10 января 2019

Движок JS оценивает оператор «+» слева направо.

При построении синтаксического дерева fn () - это левый боковой узел, а другой оператор - правый узел. Интерпретатор оценивает левый узел и помещает его в стек, затем правый узел и помещает результат в стек, затем выполняет операцию + для двух верхних элементов в стеке.

...