我理解的作用域

我只是一个虾纸丫 提交于 2019-12-05 15:43:25

JavaScript采用静态作用域:也叫词法作用域,函数的作用域是定义的时候就确定了;(因为JavaScript采用的是词法作用域,函数的作用域基于函数创建的位置。)

var value = 1;

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

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

bar();

// 结果是 1
分析,从上到下未执行时候foo中的value在全局条件下,此时的value是等于1的,而不会随着foo在bar中执行,value就变成2了;
所以是静态作用域,函数声明的时候就确定了作用域
这篇文章这样分析也可以 https://github.com/mqyqingfeng/Blog/issues/3执行 foo 函数,先从 foo 函数内部查找是否有局部变量 value,如果没有,就根据书写的位置,查找上面一层的代码,也就是 value 等于 1,所以结果会打印 1。

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!