Otros lo han explicado undefined
. undefined
es como una variable global que se puede redefinir a cualquier valor. Esta técnica es para evitar que se rompan todas las comprobaciones indefinidas si alguien escribió decir, en undefined = 10
algún lugar. Se garantiza que un argumento que nunca se pasa será real, undefined
independientemente del valor de la variable undefined
.
La razón para pasar la ventana se puede ilustrar con el siguiente ejemplo.
(function() {
console.log(window);
...
...
...
var window = 10;
})();
¿Qué registra la consola? El valor del window
objeto ¿verdad? ¡Incorrecto! 10? ¡Incorrecto! Se registra undefined
. El intérprete de Javascript (o el compilador JIT) lo reescribe de esta manera:
(function() {
var window; //and every other var in this function
console.log(window);
...
...
...
window = 10;
})();
Sin embargo, si obtiene la window
variable como argumento, no hay var y, por lo tanto, no hay sorpresas.
No sé si jQuery lo está haciendo, pero si está redefiniendo window
la variable local en cualquier lugar de su función por cualquier razón, es una buena idea tomarla prestada del alcance global.