1.
var name = "The Window"; var object = { name : "My Object", getName: function(){ return this.name; } };
La méthode getName() ici renvoie simplement la valeur de this.name. Voici plusieurs façons d'appeler object.getName()
méthodes et leurs résultats respectifs.
object.getName(); //"Mon objet"
(object.getName)(); //"Mon objet"
(object.getName = object.getName)(); //"La Fenêtre", en mode non strict
Dans le troisième cas (object.getName=object.getName); équivalent à var fn=(object.getName=object.getName);fn();
2.
function outputNumbers(count){ for (var i=0; i < count; i++){ //alert(i); } var i; //重新声明变量 alert(i); //计数 } outputNumbers(5);
JavaScript ne vous indique jamais si vous déclarez la même variable plusieurs fois ; dans ce cas, il ignore simplement les déclarations suivantes
Voir (cependant, il effectue l'initialisation des variables dans les déclarations suivantes). Des fonctions anonymes peuvent être utilisées pour imiter la portée au niveau du bloc et éviter ce problème.
3.
function(){ //这里是块级作用域 }(); //出错!
Ce code provoquera une erreur de syntaxe car JavaScript traite le mot-clé function comme le début d'une déclaration de fonction, et la fonction
Les déclarations numériques ne peuvent pas être suivies de parenthèses. Cependant, les expressions de fonction peuvent être suivies de parenthèses. Pour convertir une déclaration de fonction en expression de fonction,
Ajoutez-y simplement une paire de parenthèses comme ci-dessous.
(function(){ //这里是块级作用域 })();
4.
function outputNumbers(count){ (function () { for (var i=0; i < count; i++){ alert(i); } })(); alert(i); //导致一个错误! }
Dans cette fonction outputNumbers() réécrite, nous insérons une portée privée en dehors de la boucle for. Anonyme
Toutes les variables définies dans la fonction seront détruites à la fin de l'exécution. Par conséquent, la variable i ne peut être utilisée que dans la boucle et est détruite après utilisation.
La variable count est accessible dans la portée privée car cette fonction anonyme est une fermeture et elle peut accéder à
dans la portée contenant.
toutes les variables.
Cette technique est souvent utilisée en dehors des fonctions dans la portée globale pour limiter l'ajout de trop de variables et de fonctions à la portée globale.
De manière générale, nous devrions essayer d’ajouter le moins de variables et de fonctions possible à la portée globale. Dans un grand projet
impliquant de nombreux développeurs
Dans une application, un trop grand nombre de variables et de fonctions globales peut facilement conduire à des conflits de noms. En créant des scopes privés, chaque développeur peut
pour utiliser vos propres variables sans vous soucier de gâcher la portée globale. Par exemple :
(function(){ var now = new Date(); if (now.getMonth() == 0 && now.getDate() == 1){ alert("Happy new year!"); } })();
Mettez le code ci-dessus dans la portée globale, qui peut être utilisé pour déterminer quel jour est le 1er janvier s'il atteint ce jour, il sera utilisé
L'utilisateur affiche un message de vœux du Nouvel An. La variable est désormais une variable locale dans la fonction anonyme, et nous n'avons pas besoin d'être dans la portée globale
Créez-le dans .
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.