作用域就是变量的可访问性和可见性的代码区域,分为三种:块级、函数、全局。
let a = 2;
function foo() {
console.log( a );
}
function bar() {
let a = 3;
foo();
}
bar();
1. 如果处于词法作用域,变量a首先在foo()函数中查找,没有找到。于是顺着作用域链到全局作用域中查找,找到为2,赋值,输出2。
2. 如果处于动态作用域,变量a首先在foo()函数中查找,没有找到,顺着调用栈找到调用foo()函数的地方,即bar()函数中查找,找到为3,赋值,输出3。
作者:两支耳朵都听到啦
链接:https://juejin.cn/post/7029138712965595144
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 词法作用域:也称静态作用域,是最为普遍的一种作用域模型。在代码书写时完成划分,作用域沿着它定义的位置往外延伸
- 动态作用域:相对“冷门”,bash脚本、Perl等语言采纳的是动态作用域。在代码运行时完成划分,作用域链沿着他的调用栈往外延伸

作者:DarkHorse
链接:https://juejin.cn/post/7069578126979760158
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。