¿Por qué funciona este JavaScript?
Estaba viendo la salida de algunas cosas de UglifyJS y me encontré con un código como el siguiente:
var a = 0;
var b = function () {
return function () {
a++;
}(), 'Hello, World'
}();
Despues de ejecutar ese codigoa
es1
yb
es la cuerdaHello, World!
.
A primera vista parece queb
estaránundefined
ya que parece que se está devolviendo el resultado de una función sin valor de retorno, pero a eso le sigue una coma y una cadena literal.
¿Por qué funciona esto?
¿Y por qué UglifyJS no ejecuta la función anónima y luego regresa?Hello, World!
como la siguiente afirmación?