Iván González
Resolví un kata en CodeWars y estaba revisando algunas de las otras soluciones cuando encontré el doble asterisco para indicar el poder de. Investigué un poco y puedo ver que este es un operador válido en python, pero no puedo ver nada al respecto en la documentación de JavaScript.
var findNb = m =>
{
var n = Math.floor((4*m)**.25);
var sum = x => (x*(x+1)/2)**2;
return sum(n) == m ? n : -1;
}
Sin embargo, cuando ejecuto esta solución en CodeWars, parece funcionar. Me pregunto si esto es nuevo en ES6, aunque no he encontrado nada al respecto.
Sí. **
es el operador de exponenciación y es el equivalente de Math.pow
.
Se introdujo en ECMAScript 2016 (ES7).
Para más detalles, consulte el propuesta y esto capítulo de Explorando ES2016.
Mago
**
se introdujo en ECMAScript 2016 (ES7). Pero tenga en cuenta que no todos los entornos de javascript lo implementan (por ejemplo, Internet Explorer no lo admite).
Si quieres ser navegador cruzado, tienes que usar Math.pow
.
Math.pow(4, 5)
-
^^^ de hecho, arrojará
Uncaught SyntaxError: Unexpected token *(…)
– taxicala
22 oct 2015 a las 15:19
-
Esta respuesta depende de la versión de ECMAScript que esté usando, porque es incorrecta para ES7 como señaló Thomas
–Luca Steeb
20 de diciembre de 2016 a las 19:23
-
Esta respuesta puede haber sido correcta cuando se publicó, pero ahora es incorrecta. Debería editarse para mencionar las versiones de JavaScript en las que
**
existe/no existe.– chris
12 de abril de 2017 a las 13:13
**
operator es un operador válido en ES7. Tiene el mismo significado que Math.pow(x,y)
Por ejemplo, 2**3
es igual que Math.pow(2,3)
Aquí están los detalles de Wikipedia.
Dos nuevas funciones añadidas en ES7:
el operador de exponenciación (**) y Array.prototype.includes
https://en.wikipedia.org/wiki/ECMAScript#cite_ref-ES2016_12-1
Puedes jugar con esto en este Compilador Babel Live
**
es el indicador de descuento para negrita. Probablemente fue un error de sintaxis del autor al escribir la respuesta de descuento.– Reactular
22 oct 2015 a las 15:19
de Especificaciones: Operador multiplicativo: uno de * / %
– Grundy
22 oct 2015 a las 15:21
@Grundy también está usando la flecha gorda, por lo que es posible
– r3wt
22/10/2015 a las 15:34
El flecha gorda (=>) está en la especificación ES6. El operador exponencial (**) está en la especificación ES7. No sé nada sobre codewars, pero esto podría ser JavaScript válido si estuvieras usando rastreador o Babel
– Howard Renollet
22/10/2015 a las 17:10
Entonces, solo miré Codewars, todo su código se ejecuta a través de BabelJS, lo que explica por qué este código funciona con los operadores ES6 y ES7.
– Howard Renollet
22/10/2015 a las 18:04