En tant que débutant, ça fait du bien d'apprendre quelque chose chaque jour. Aujourd'hui, lorsque j'apprenais les fermetures, j'ai vu les deux concepts de portée et de chaîne de portée. J'ai le sentiment qu'en tant que novice ambitieux, il est nécessaire de les comprendre en détail.
Portée des variables
En ce qui concerne les variables js, il existe des variables globales et des variables locales. Ici je pense qu'il suffit de le prendre au pied de la lettre... Voici un exemple
var message = "今天我做的糯米蒸排骨"; //定义一个全局变量function doL(){ var ss = "侠客行很好看"; //定义一个局部变量 alert(message); //输出"今天我做的糯米蒸排骨",在函数中可以引用到全局变量 function alertDo(){ alert(ss); } alertDo(); //输出"侠客行很好看",这就涉及变量的作用域了 };doL(); alertDo(); //没法输出 alertDo is not definedalert(message); //可以输出"今天我做的糯米蒸排骨"
Il y a deux endroits intéressants ici
1. déclaré sans var, nous déclarons en fait une variable globale. Eh bien, c'est faux, voir ci-dessous, num est une variable globale,
et mum = 1; en fait une opération d’attribution d’attribut. Tout d'abord, il essaiera de résoudre
mamandans la chaîne de portée actuelle (si elle est déclarée dans une méthode, la chaîne de portée actuelle représente la portée globale et la portée locale de la méthode, etc...) ; chaîne de portée Si mum est trouvé dans la chaîne de portée, l'attribution de l'attribut mum sera effectuée si mum n'est pas trouvée, elle sera attribuée au global ; object (c'est-à-dire la chaîne de portée actuelle Créez l'attribut mum dans l'objet de niveau supérieur (tel qu'un objet window) et attribuez une valeur. Attention ! Il ne déclare pas de variable globale, mais crée une propriété de l'objet global. Puisque la déclaration de variable a son propre attribut non supprimable, comparez var num = 1 avec num = 1. La première est une déclaration de variable avec l'attribut non supprimable, elle ne peut donc pas être supprimée, la seconde est un attribut de la variable globale ; , il peut donc être supprimé de la variable globale .
var num =1; mum = 1;
var scope="global"; function t(){ console.log(scope); var scope="local" console.log(scope); } t();
Il affichera d'abord undéfini, puis la portée. Il déclarera les variables à l'avance et écrasera les variables locales, ce qui équivaut à la situation suivante
var scope="global"; function t(){ var scope; console.log(scope); scope="local" console.log(scope); } t();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!