函数执行的作用域链
function test(fn) {
const a =10;
fn ()
}
var a = 20;
function fn() {
console.log(a)
}
test(fn)
问:函数fn中的变量a最终会输出多少
答案是:20
分析:函数执行作用域是定义的时候就确定的,而this是调用的时候确定的!
fn是在全局作用于下定义的,执行console.log(a) 首先在局部变量中寻找a,没有找到再从上一层作用域即全局作用域下寻找。故a的值输出的是全局作用于下a的值。