D'autres ont expliqué undefined
. undefined
est comme une variable globale qui peut être redéfinie à n'importe quelle valeur. Cette technique permet d'éviter que toutes les vérifications d'indéfinition ne se brisent si quelqu'un écrivait par exemple , undefined = 10
quelque part. Un argument qui n'est jamais passé est garanti comme étant réel. undefined
quelle que soit la valeur de la variable undefined
.
La raison de passer la fenêtre peut être illustrée par l'exemple suivant.
(function() {
console.log(window);
...
...
...
var window = 10;
})();
Qu'est-ce que la console enregistre ? La valeur de window
objet droit ? Faux ! 10 ? Faux ! Il enregistre undefined
. L'interpréteur Javascript (ou le compilateur JIT) le réécrit de cette manière : -.
(function() {
var window; //and every other var in this function
console.log(window);
...
...
...
window = 10;
})();
Cependant, si vous obtenez le window
comme argument, il n'y a pas de var et donc pas de surprise.
Je ne sais pas si jQuery le fait, mais si vous redéfinissez window
une variable locale n'importe où dans votre fonction pour n'importe quelle raison, c'est une bonne idée de l'emprunter à la portée globale.
3 votes
Je voulais ajouter que Paul Irish en parle dans cette vidéo : paulirish.com/2010/10-choses-que-j'ai-appris-de-la-source-jquery
0 votes
@Bergi vous avez marqué ma question comme étant un doublon d'une autre mais j'ai posé la question presque un an avant le doublon. La distribution devrait être l'inverse.
0 votes
@dkinzer : Il ne s'agit pas d'être interrogé plus tôt, il s'agit de la meilleure réponse. Certes, dans ce cas, c'est au coude à coude, mais j'ai trouvé que la réponse de CMS était la meilleure. Venez à chat.stackoverflow.com/rooms/17 pour en discuter, cependant
1 votes
Voir aussi Quels sont les avantages de l'utilisation de (function(window, document, undefined) { })(window, document) ?