Aucune fonction dans ECMAScript ( langage de base que le JS est basé sur l' ) est séparé du contexte d'exécution, et s'exécute individuellement à partir de l'un de l'autre. À l'intérieur de chaque contexte d'exécution, this
fait référence à l'objet en question, par défaut quelle que soit la fonction est attaché.
function foo() {
alert(this===window)
}
Serait alerte vrai, parce que la fenêtre est l'objet qui possède la " foo " la méthode. Toutes les variables définies dans une fonction devenue accessible grâce à la fonction unique de la portée de la chaîne, de l'environnement.
function world() {
var name = 'global';
alert(name)
}
serait alerte "global" de toute évidence.
function world() {
var name = 'global';
(function() {
var name = 'country';
alert(name)
})();
alert(name)
}
Dans le dernier exemple en date, lors de la première alerte est invoquée, Javascript détermine que, dans le champ d'application de la chaîne de l'intérieur de la fonction que l'identificateur name
est définie, donc il n'a pas à rechercher le champ d'application de la chaîne de l'attraper.
Dans la seconde alerte invocation, name
est également définie dans le même contexte et les alertes "global";
function world() {
var name = 'global';
(function() { alert(name) })();
}
Dans cet exemple, l' name
identifiant n'est pas défini dans le même contexte et il a ainsi le champ d'application de la chaîne à l'extérieur de la fonction où le nom est défini, et il avertit mondiale.
Référence: