我理解的作用域

时间:2019-11-26 00:39:47   收藏:0   阅读:112

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。

  

原文:https://www.cnblogs.com/qqfontofweb/p/11932792.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!