Outros já explicaram undefined. undefinedé como uma variável global que pode ser redefinida para qualquer valor. Essa técnica é para impedir que todas as verificações indefinidas sejam quebradas se alguém escreveu digamos, em undefined = 10algum lugar. Um argumento que nunca é passado é garantido como real, undefinedindependentemente do valor da variável undefined .
A razão para passar pela janela pode ser ilustrada com o exemplo a seguir.
(function() {
console.log(window);
...
...
...
var window = 10;
})();
O que o console registra? O valor do windowobjeto certo? Errado! 10? Errado! Ele registra undefined. O interpretador Javascript (ou compilador JIT) o reescreve desta maneira -
(function() {
var window; //and every other var in this function
console.log(window);
...
...
...
window = 10;
})();
No entanto, se você receber a windowvariável como argumento, não haverá var e, portanto, nenhuma surpresa.
Eu não sei se o jQuery está fazendo isso, mas se você estiver redefinindo windowa variável local em qualquer lugar da sua função por qualquer motivo, é uma boa ideia emprestá-la do escopo global.