Оператор ** возвращает результат первой переменной в степени второй переменной. То есть Math.pow(a,b).

var a = 2; var b = 5; a ** b; // 32 Math.pow(a, b); // 32
Если нам нравится a ** b ** c , , тогда операция вычисляется справа налево, то есть a ** (b**c)
var a = 5, b = 2, c = 2; a ** b ** c; // 625 // Execution order of a ** b ** c; (5 ** (2 ** 2) ) (5 ** 4) 625
Нельзя ставить унарный оператор (+/-/~/!/delete/void/typeof) непосредственно перед базовым числом.
// Invalid Operations +a ** b; -a ** b; ~a ** b; !a ** b; delete a ** b; void a ** b; typeof a ** b; // All the above operation are invalid and result in Uncaught SyntaxError: Unary operator used immediately before exponentiation expression. Parenthesis must be used to disambiguate operator precedence
Обработка отрицательных чисел
-2 ** 2; //invalid // The above expression can be converted into (-2) ** 2; // 4 (-2) ** 3; //-8
Любая операция с NaN равна NaN
NaN ** 1; //NaN NaN ** NaN; // NaN
Что произойдет при использовании undefined:
1 ** undefined; // NaN // because 1 ** Number(undefined); 1 ** NaN; // NaN
Аналогично, когда мы делаем ** на null, Number(null) → 0, поэтому степень 0 равна 1.
10 ** null; // 1 // because 10 ** Number(null); // Number(null) --> 0 10 ** 0; // 1
Если вы найдете этот полезный сюрприз, то я здесь.
Поделитесь, если вы счастливы 😃 😆 🙂.
Подпишитесь на Javascript Jeep🚙💨