深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】 - youngperson/study-100 GitHub Wiki
var x=10;
function fn() {
var b=20;
console.log(x+b); //这里的x在这里就是一个自由变量
}
var x=10;
function fn() {
console.log(x);
}
function show(f) {
var x=20;
(function (){
f(); //10,而不是20
})();
}
show(fn);
要到创建这个函数的那个作用域中取值——是“创建”,而不是“调用”,切记切记。 如果跨了一步,还没找到呢?——接着跨!——一直跨到全局作用域为止。要是在全局作用域中都没有找到,那就是真的没有了。 这个一步一步“跨”的路线,我们称之为——作用域链。