за.
то я дурачился с новым оператором возведения в степень и обнаружил, что нельзя ставить унарный оператор непосредственно перед базовым числом.
let result = -2 ** 2; // syntax error
let result = -(2 ** 2); // -4
let x = 3;
let result = --x ** 2; // 4
В JavaScript невозможно написать неоднозначное выражение возведения в степень, то есть вы не можете поставить унарный оператор (+
/-
/~
/!
/delete
/void
/typeof
) непосредственно перед базовым номером.
В большинстве языков, таких как PHP и Python и других, в которых есть оператор возведения в степень (обычно^
или же**
), оператор возведения в степень определен, чтобы иметь более высокий приоритет, чем унарные операторы, такие как унарные+
и одинарный-
, но есть несколько исключений. Например, в Bash**
Оператор определен, чтобы иметь более низкий приоритет, чем унарные операторы.
Я понимаю, что это было сделано по ошибке. Я не понимаю это дизайнерское решение. Кто на самом деле будет удивлен, что-x ** 2
отрицательно? Это следует не только другим основным языкам программирования, но и математической нотации, которая широко использовалась в течение сотен лет и преподается каждому ученику средней школы по алгебре.
В JavaScript'1'+ 2
является'12'
а также'1'-2
является-1
но-1**2
выдает ошибку, потому что это может быть неоднозначным? Помогите мне понять это дизайнерское решение.