Règles d'utilisation dans les variables
- Après avoir une portée, la variable a une portée d'utilisation, et il y a des règles d'utilisation
- Les règles d'utilisation variables sont divisées en deux types, les règles d'accès et les règles d'affectation
1. Règles d'accès
-
Lorsque je veux obtenir la valeur d'une variable, nous appelons ce comportement l'accès
-
Règles pour obtenir des variables :
- Tout d'abord, regardez à l'intérieur de votre propre champ d'application, s'il y en a, utilisez-le directement
- Si ce n'est pas le cas, accédez à la portée de niveau supérieur pour trouver, s'il y en a, utilisez-la
- Sinon, continuez à chercher dans le champ supérieur, et ainsi de suite
- S'il n'y a pas de telle variable jusqu'à la portée globale, une erreur sera signalée directement (la variable n'est pas définie)
var num = 100
function fn() {
var num2 = 200
function fun() {
var num3 = 300
console.log(num3) // 自己作用域内有,拿过来用
console.log(num2) // 自己作用域内没有,就去上一级,就是 fn 的作用域里面找,发现有,拿过来用
console.log(num) // 自己这没有,去上一级 fn 那里也没有,再上一级到全局作用域,发现有,直接用
console.log(a) // 自己没有,一级一级找上去到全局都没有,就会报错
}
fun()
}
fn()
-
Les règles d'accès aux variables sont également appelées mécanismes de recherche de portée
-
Le mécanisme de recherche de portée ne peut être recherché que vers le haut, pas vers le bas.
function fn() {
var num = 100
}
fn()
console.log(num) // 发现自己作用域没有,自己就是全局作用域,没有再上一级了,直接报错
2. Règles d'attribution
-
Lorsque vous souhaitez affecter une valeur à une variable, vous devez d'abord trouver la variable et l'affecter
-
Règles d'affectation des variables :
- Regardez d'abord à l'intérieur de votre propre portée et attribuez-la directement s'il y en a une
- Sinon, allez dans la portée supérieure pour le trouver, s'il y en a, attribuez-le directement
- S'il n'y a pas de recherche dans la portée de niveau supérieur, attribuez directement la valeur
- S'il n'y a pas de portée globale, définissez cette variable en tant que variable globale et attribuez-lui une valeur
function fn() {
num = 100
}
fn()
// fn 调用以后,要给 num 赋值
// 查看自己的作用域内部没有 num 变量
// 就会向上一级查找
// 上一级就是全局作用域,发现依旧没有
// 那么就会把 num 定义为全局的变量,并为其赋值
// 所以 fn() 以后,全局就有了一个变量叫做 num 并且值是 100
console.log(num) // 100