2012-03-08 29 views

Respuesta

10

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); 
+0

triste pero cierto ... – powtac

+0

Puede explicar o puede haber algún vínculo será útil también, muy confundido. –

+1

@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); '. –