【学习笔记】"JavaScript深入系列之作用域和动态作用域"学习笔记

真正的大神能把知识讲得有条不紊!,站在巨人的肩膀上学习
学习地址https://github.com/mqyqingfeng/Blog
声明:图片及内容摘自上述链接,这里只是记录学习笔记,完整版请查阅上述链接。

作用域

作用域是指程序源代码中定义变量的区域,作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。

JavaScript 采用的时此法作用域,也就是静态作用域。在JavaScript中,函数的作用域在函数定义的时候就决定了。
动态作用域是指,函数的作用域在函数调用的时候才决定。

var value = 1;

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

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

bar();//1

假设JavaScript采用静态作用域,分析过程为:
执行foo函数,先从foo函数内部查找是否有局部变量value,如果没有,就根据书写的位置,查找上面一层的代码,也就是value等于1,所以结果会打印为1

假设JavaScript采用动态作用域,分析过程为:
执行foo函数,依然是从foo函数内部查找是否有局部变量value。如果没有,就从调用函数的作用域,也就是bar函数内部查找value变量,所以结果会打印为2

posted @ 2020-04-15 20:36  丹哥不是哥  阅读(112)  评论(0编辑  收藏  举报