词法作用域与动态作用域


词法作用域与动态作用域

概念


作用域是指程序源代码中定义变量的区域。

作用域规定了如何查找变量,即当前执行代码对变量的访问权限。

JavaScript采用词法作用域(lexical scoping),即静态作用域。

静态作用域与动态作用域


因为 JavaScript采用词法作用域,因此函数作用域在定义时就被决定了。

而词法作用域相对的是动态作用域,即函数的作用域在调用的时候决定。
例子:
var value = 1;

function foo() {
    console.log(value);
}

function bar() {
    var value = 2;
    foo();
}

bar();

// 结果是 ???    1
动态作用域
bash是动态作用域,将文件后缀改成bash,然后进入相应的目录,执行 bash ./***.bash
value=1
function foo () {
    echo $value;
}
function bar () {
    local value=2;
    foo;
}

bar // 2

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录