作用域(静态作用域)

103 阅读1分钟

这里可能不讨论全局作用域、函数作用域和块级作用域

这里主要讨论的是:

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