作用域链本质上就是使用的是哪个变量,全局变量,局部变量,自身的变量。这个在看别人代码的逻辑的时候非常有用,底层是变量的查找机制。
- 嵌套关系的作用域窜连起来形成了作用域链
- 在函数被执行,会优先查找当前函数作用域中的变量。
- 如果当前函数作用域找不到,则会逐级查找父级作用域,知道全局作用域
- 相同作用域链中按着从小到大的规则查找变量
- 子作用域能够访问父作用域,父作用域无法访问子作用域
代码一:
// 作用域链 let a = 6;//全局作用域 function f() { function d(){ console.log(a); } d(); } f();
上述代码输入的是6 ,函数d()最后找到了全局作用域
代码二:
let a = 6;//全局作用域 function f() { a = 7;//父级作用域 function d(){ console.log(a); } d(); } f();
上述代码输入的是7,函数d()找到了父级作用域
代码三:
// 作用域链 let a = 6;//全局作用域 function f() { a = 7;//父级作用域 function d(){ a = 8;//自己的作用域 console.log(a); } d(); } f();
上述代码输出的是8,最后找到函数自身的变量,函数自身的作用域优先级最高
标签:function,变量,父级,作用域,代码,JavaScript,函数 From: https://www.cnblogs.com/yansunda/p/18435226