Les args reçus sont:
(function($,window,undefined){
//..
})(jQuery, window);
$
: Une référence pour l'objet jQuery, souvent fait pour pouvoir s'y référer comme les $
alias , puisque dans la portée externe, le code peut être en "mode de compatibilité".
window
: L'argument window
est souvent utilisé pour réduire identificateur recherche. Dans les scripts de navigateur window
est une propriété de l'objet global, afin de le résoudre, le processus de résolution d'identificateur doit inspecter chaque portée, jusqu'à ce qu'il atteigne la portée globale. Si nous ajoutons window
comme argument, la recherche sera courte, quelle que soit l'imbrication de notre fonction.
Dans les environnements de script non-navigateur, l'identifiant window
n'existe même pas, et ce modèle est une façon courante de garder une trace de l'objet global, par exemple:
(function (global, undefined) {
//..
})(this);
Notez que la valeur this
pour code global (pas le code de fonction), fait toujours référence à l'objet global.
undefined
: Enfin, mais non le moindre, l'argument undefined
, il est utilisé comme une « mesure de sécurité », car undefined
est également une propriété de l'objet global, et dans la ECMAScript 3e édition Spécification, sa valeur est mutable, Immagine:
undefined = true;
ce serait gâcher votre code, mais si nous avons un argument, et nous ne transmettons pas rien, il tiendra la valeur indéfinie . Heureusement cela a été fixé sur la spécification ECMAScript 5th Edition, undefined
, Infinity
et NaN
ne sont plus inscriptibles. :)
wow, je n'avais aucune idée du bit non défini là. étrange que indéfini est mutable. – Matt
'typeof myVar ==" undefined "' est à peu près la comparaison la plus sûre à utiliser, mais il est bon que cette mesure de sécurité soit en place. – Gareth
@Matt, Ouais, était quelque chose de mal sur ECMAScript 3, 'undefined' n'est pas un * Literal * comme' null', 'true' ou' false', est une propriété inscriptible de l'objet global :( – CMS