函数执行的作用域链

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的值。

posted @ 2022-06-27 16:05  X1nChenH  阅读(18)  评论(0编辑  收藏  举报