真正的大神能把知识讲得有条不紊!,站在巨人的肩膀上学习
学习地址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