7
¿Por qué el siguiente código es código JavaScript válido?Por qué este código es válido: "(1, eval) ('this')"
var global = (1,eval)('this');
alert(global);
¿Por qué el siguiente código es código JavaScript válido?Por qué este código es válido: "(1, eval) ('this')"
var global = (1,eval)('this');
alert(global);
Eso es debido a que el comma operator devuelve su segundo operando (y evalúa ambos).
El código en su pregunta es equivalente a:
1;
var global = eval('this');
alert(global);
triste pero cierto ... – powtac
Puede explicar o puede haber algún vínculo será útil también, muy confundido. –
@Sheikh, hice un enlace a la documentación de MDN en mi respuesta :) Básicamente, '(1, eval)' aplica el operador de coma ',' a '1' y' eval'. El operador evalúa '1', luego evalúa y devuelve' eval'. Por lo tanto, 'foo = (1, eval) (algo)' es equivalente a '1; foo = eval (algo); '. –