2015-10-22 16 views
6

Ho risolto un kata su codewars e ho esaminato alcune delle altre soluzioni quando mi sono imbattuto nel doppio asterisco per indicare la potenza di. Ho fatto qualche ricerca e posso vedere che questo è un operatore valido in python ma non può vedere nulla a riguardo nella documentazione JavaScript.Il doppio asterisco ** è un operatore Javascript valido?

var findNb = m => 
{ 
    var n = Math.floor((4*m)**.25); 
    var sum = x => (x*(x+1)/2)**2; 
    return sum(n) == m ? n : -1; 
} 

Eppure quando eseguo questa soluzione su codewar, sembra funzionare. Mi chiedo se questo è nuovo in ES6, anche se non ho trovato nulla a riguardo.

+1

'' ** è l'indicatore di Markdown per il grassetto. Era probabilmente un errore di sintassi dell'autore durante la scrittura della risposta markdown. – cgTag

+1

da [specifica] (http://www.ecma-international.org/ecma-262/6.0/#sec-multiplicative-operators): _MultiplicativeOperator: uno di * /% _ – Grundy

+0

@Grundy sta usando anche la fat fat arrow , quindi è possibile che sia – r3wt

risposta

8

** è stato introdotto in ECMAScript 2016 (ES7). Ma tieni presente che non tutti gli ambienti javascript lo implementano (ad esempio, Internet Explorer non lo supporta).

Se si desidera essere cross browser, è necessario utilizzare Math.pow.

Math.pow(4, 5) 
+2

'1 ** 1' in qualsiasi console ....... – cgTag

+1

^^^ infatti, getterà' Uncaught SyntaxError: Token inaspettato * (...) ' – taxicala

+0

Sì. Funziona sulla mia versione di Chrome 52.0.2743.116. – Eric

17

Sì. ** è l'operatore di esponenziazione ed è l'equivalente di Math.pow.

È stato introdotto in ECMAScript 2016 (ES7).

Per ulteriori informazioni, vedere il proposal e questo chapter di Exploring ES2016.