w3s - Sintaxis javascript inusual
id='' contact html (4)
Dado que el operador de coma en javascript evalúa múltiples operandos y devuelve el último. MDN:
El operador de coma evalúa sus dos operandos (de izquierda a derecha) y devuelve el valor del segundo operando.
Tu expresión (0,foo)
devuelve foo
que luego es invocado por el paranthesis, puesto después.
¿Podría alguien explicarme qué está pasando aquí en la segunda línea? :
var foo = function(){alert("hello?")};
(0,foo)();
Está evaluando ambas expresiones en el primer paréntesis y ejecutando la segunda (en este caso, una función).
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comma_Operator
La coma evaluará los operandos y devolverá el último.
la segunda línea volverá foo
La expresión de coma infame a,b
evalúa ambos argumentos y devuelve el valor de la expresión de la mano derecha.
Por lo tanto, en este caso es exactamente lo mismo que foo();
.
Aquí hay un ejemplo mejor que te ayudará a entender lo que está pasando:
function foo() {
print("foo called");
return 123;
}
function bar() {
print("bar called");
return 456;
}
var result = (foo(), bar());
print("result:", result);
Salida:
foo called
bar called
result: 456
También la expresión de coma se puede confundir con los argumentos de la función delimitadora de coma. ¡No es el mísmo! Note la diferencia:
print("result:", foo(), bar() ); // 3 arguments, no comma operator
print("result:", (foo(), bar()) ); // 2 arguments, comma operator