Разница между оператором возведения в степень ECMAScript 2016 и Math.pow()

В чем преимущество использования ECMAScript 2016 оператор возведения в степень над текущим Math.pow()? Другими словами, помимо уменьшения количества нажатий клавиш, в чем разница между

Math.pow(2, 2) => 4 и 2 ** 2 => 4


person Matt    schedule 02.06.2016    source источник
comment
Судя по поиску, это не по какой-либо другой причине, кроме того, что оно выглядит лучше. Также существует возможность использования оператора **=.   -  person slugonamission    schedule 02.06.2016
comment
Никто. Вы должны полностью использовать jQuery для этого в любом случае.   -  person    schedule 02.06.2016


Ответы (3)


Никто. Как вы можете прочитать в спецификации ES7, оба Math.pow и ** оператор возведения в степень привести свои аргументы/операнды к числам и использовать такой же алгоритм для определения результата.

Дополнение: это изменилось с введением в ES2020 типа BigInt, значения которого поддерживаются только операторами (включая **), но не объектом Math.

person Bergi    schedule 02.06.2016
comment
Никто, при условии, что никто не возился с Math или Math.pow. :-) - person T.J. Crowder; 05.12.2018

Поздно на вечеринку - я просто хотел добавить, что, несмотря на то, что между двумя способами нет никакой разницы, я недавно понял, что оператор возведения в степень ** не поддерживается в Internet Explorer, поэтому разработчики, которые заинтересованы в расширенном < b>поддержка разных браузеров для своих приложений, возможно, предпочтут выбрать Math.pow(...) вместо оператора возведения в степень.введите здесь описание изображения

person Shimi    schedule 08.12.2020

Math.pow(2,2) === 2**2; // ЛОЖЬ

Math.pow(99,99);
99 ** 99;

Результат:

3,697296376497263e+197

3,697296376497268e+197

person user3079091    schedule 02.12.2020
comment
Либо это было исправлено с тех пор, либо это зависит от реализации, потому что я только что проверил в своей консоли браузера (Firefox в macOS) и получил одинаковое значение для обоих из них. - person John Montgomery; 08.12.2020
comment
Это было исправлено. См. bugs.chromium.org/p/v8/issues/detail?id =5848 например - person Grant Gryczan; 02.01.2021