Size: a a a

JavaScript.Ninja

2020 February 24

ВП

Виктор Притулюк in JavaScript.Ninja
Alexander
Ответ я знаю, меня интересует сама логика очередности
логика проста - при 1-м прогоне интерпритатор проставляет вместо i-шек цифры при чем в порядке как встречает их по тексту, на 2-м прогоне производит с ними действия. т.е. умножение будет произведено конечно же раньше сложения, только число в нем будет использовано не 1-м, а тем n-ным каким его встретит интерпритатор
источник

A

Alexander in JavaScript.Ninja
Illya Klymov
И посмотрите как дерево выглядит
Про ast explorer ничего не слышал. Спасибо, уже смотрю 👍
источник

A

Alexander in JavaScript.Ninja
Нет, не подход такой вариант. Он показывает как происходит парсинг, а не калькуляция. Для калькуляции действует иная логика приоритетности
источник

IK

Illya Klymov in JavaScript.Ninja
Alexander
Нет, не подход такой вариант. Он показывает как происходит парсинг, а не калькуляция. Для калькуляции действует иная логика приоритетности
как раз все правильно он показывает )
источник

IK

Illya Klymov in JavaScript.Ninja
если знать что перед вызовом оператора надо вычислить все аргументы, и что аргументы вычисляются слева направо
источник

IK

Illya Klymov in JavaScript.Ninja
то и становится понятно откуда берется 1 + 1 * 3
источник

IK

Illya Klymov in JavaScript.Ninja
- чтобы посчитать выражение нам надо посчитать верхний BinaryExpression.
- Для этого надо посчитать его аргументы
- Его левая часть  (left) это UpdateExpression в котором префиксная форма инкремента. Вернется 1, i станет равно 1
- Правая часть (right) это тоже BinaryExpression, начинаем считать его аргументы слева направо
- Левая часть это UpdateExpression в постфиксной форме. i сейчас 1, поэтому вернется 1, i станет равно 2
- Правая часть это UpdateExpression в префиксной форме, i сейчас 2, поэтому вернется 3, i станет равно 3
- Завершаем вычисление вложенного BinaryExpression: 1 * 3 = 3
- Завершаем вычисление верхнего BinaryExpression: 1 + 3 = 4
источник

A

Alexander in JavaScript.Ninja
Illya Klymov
то и становится понятно откуда берется 1 + 1 * 3
Погодите Илья, все так. Но ведь тут сказано что приоритет операторов определяет порядок, в котором операторы выполняются...
Я заранее посмотрел порядок операторов и выписал сверху над операторами:

 3   16  13   17 14  16
i =   ++i  +  i++  *  ++i

Получается что i++ имеет наивысший порядок, а по идее он должен самым первым выполниться. Или я совсем не так все понимаю? Извиняюсь за повторяемость
источник

IK

Illya Klymov in JavaScript.Ninja
Да, но это не одно выражение, что собственно хорошо видно в ast explorer
источник

IK

Illya Klymov in JavaScript.Ninja
это ДВА ВЛОЖЕННЫХ ВЫРАЖЕНИЯ
источник

IK

Illya Klymov in JavaScript.Ninja
и приоритеты внутри одного выражения никак не влияют на приоритеты второго
источник

AP

Andrey Panaseyko in JavaScript.Ninja
ну и эти все финты так чисто для понимания. если такое в продакт попробуешь написать то тебе скорее всего пальцы в двери зажмут :)
источник

VO

Vladimir Olegovich in JavaScript.Ninja
Капец, на таком элементарном что-то новое узнал)
источник

A

Alexander in JavaScript.Ninja
Andrey Panaseyko
ну и эти все финты так чисто для понимания. если такое в продакт попробуешь написать то тебе скорее всего пальцы в двери зажмут :)
))) Я стараюсь так не писать, но где-то глубоко в душе понимаю что тут-то у меня пробел. А вот недавно добавился в один из сообществ JS-разработчиков, там джуны приходят с такими вопросами, видимо с собеседований приходят, вот я собственно и поднапрягся.
источник

A

Alexander in JavaScript.Ninja
Illya Klymov
и приоритеты внутри одного выражения никак не влияют на приоритеты второго
Спасибо, похоже на правду, буду дальше тестить
источник

ВП

Виктор Притулюк in JavaScript.Ninja
Alexander
Спасибо, похоже на правду, буду дальше тестить
попробуйте применить мой способ на 2-3 "сложных" примерах, может будет удобнее для восприятия
источник

DZ

D Z in JavaScript.Ninja
Redux, MobX, Effector для нового проекта?
источник

B

Bogdan in JavaScript.Ninja
D Z
Redux, MobX, Effector для нового проекта?
какойто несерьезный вопрос
источник

DZ

D Z in JavaScript.Ninja
Как его сделать серьезнее?
источник

B

Bogdan in JavaScript.Ninja
я бы такому тимлиду проект не доверил
источник