这里可能不讨论全局作用域、函数作用域和块级作用域
这里主要讨论的是:
JS采用的是词法作用域,也就是静态作用域,所以函数的作用域在函数定义的时候就决定了
var value = 1;
function foo() {
console.info(value) // 1
console.info(this) // window
}
function bar() {
var value = 3;
foo()
}
bar() ;
解释:
- 执行foo函数时,先从foo函数内部查找是否有局部变量value
- 如果没有,根据
函数书写的位置,查找上层的代码,也就是value等于1