Большая ложь о приоритетах операторов в Javascript. Или и так сойдет?

115
20 мая 2021, 10:50

Во всех учебниках и уроках что я читал, всегда пишут что первым выполнится тот оператор в выражении, у которого больше приоритет. И вроде бы это логично. Но давайте спросим у самого языка. Вот вам два примера:

var a = 10; 
a = a + (a = 5); 
console.log(a);

var a = 10; 
a = a++ + (a + 5); 
console.log(a);

В первом и втором примере левая часть вычисляется до скобок, хотя у скобок наивысший приоритет. Я уже понял алгоритм, для меня это не проблема. Но!!! Почему этого нет ни в одном учебнике? Что это и почему так? Канешно врядли кто-то знает ответ, просто так есть и надо мирится.

Answer 1

Могу привести даже более пугающий пример, надеюсь он прояснит ситуацию :)

var obj = { 
  get A() 
  { 
     console.log('A!'); 
     return 5; 
  }, 
  get B() 
  { 
     console.log('B!'); 
     return 2; 
  } 
} 
var result = obj.A + obj.B * 2; 
console.log(result);

READ ALSO
Копирование строк в JS

Копирование строк в JS

Столкнулся со странной ситуацией, есть функция которая должна просто удалить все пробелы в строке:

87
Как оптимизировать код JavaScript?

Как оптимизировать код JavaScript?

Недавно начал изучать JS, для практики решил написать небольшой калькуляторВсе в нем более-менее работает, но интересует вопрос, как оптимизировать...

104
Вернуть промис или как получить PromiseValue [дубликат]

Вернуть промис или как получить PromiseValue [дубликат]

Полога, что создаю дубль, но вдруг что-то изменилось) и есть решение вернуть значение примаса PromiseValue?

151