за.

то я дурачился с новым оператором возведения в степень и обнаружил, что нельзя ставить унарный оператор непосредственно перед базовым числом.

let result = -2 ** 2; // syntax error
let result = -(2 ** 2); // -4
let x = 3;
let result = --x ** 2; // 4

Издокументация по MDN:

В JavaScript невозможно написать неоднозначное выражение возведения в степень, то есть вы не можете поставить унарный оператор (+/-/~/!/delete/void/typeof) непосредственно перед базовым номером.

В большинстве языков, таких как PHP и Python и других, в которых есть оператор возведения в степень (обычно^ или же**), оператор возведения в степень определен, чтобы иметь более высокий приоритет, чем унарные операторы, такие как унарные+ и одинарный-, но есть несколько исключений. Например, в Bash** Оператор определен, чтобы иметь более низкий приоритет, чем унарные операторы.

Я понимаю, что это было сделано по ошибке. Я не понимаю это дизайнерское решение. Кто на самом деле будет удивлен, что-x ** 2 отрицательно? Это следует не только другим основным языкам программирования, но и математической нотации, которая широко использовалась в течение сотен лет и преподается каждому ученику средней школы по алгебре.

В JavaScript'1'+ 2 является'12' а также'1'-2 является-1 но-1**2 выдает ошибку, потому что это может быть неоднозначным? Помогите мне понять это дизайнерское решение.

Ответы на вопрос(0)

Ваш ответ на вопрос