隐居以求其志,行义以达其道
词法作用域
词法作用域

词法作用域

作用域就是变量的可访问性和可见性的代码区域,分为三种:块级、函数、全局。

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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处