JavaScript的作用域链是在函数定义时确定还是在调用时?

看到如下的一个闭包问题

var x=10;

function fn() {

    console.log(x);

}


function show(f) {

    var x=20;


    (function() {

        f();

    })();

}

show(fn);

打印的是10而不是20,x在取值时不是沿着作用域链向上寻找吗,如果作用域链是在函数创建时确定结果就是10,如果是在调用时确定就应该是20,有没有关于作用域链准确的说法?这里准确的作用域链应该是什么样的?fn和show处于同一级还是fn在show内?

凤凰求蛊
浏览 468回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript