“[JavaScript 函数] 在内部存储它们可能引用的在其封闭范围中定义的任何变量。”
我怎样才能确定那组变量是什么?
例如,Effective JavaScript中的 David Herman给出了这个函数(和闭包):
function sandwichMaker() {
var magicIngredient = "peanut butter";
function make(filling) {
return magicIngredient + " and " + filling;
}
return make;
}
var f = sandwichMaker();
document.writeln("<p>" + f("jelly") + "</p>");
document.writeln("<p>" + f("bananas") + "</p>");
document.writeln("<p>" + f("marshmallows") + "</p>");
当然,magicIngredient是 make() 可访问的变量,但还有什么?如果 SandwichMaker 本身包含在一个函数中会怎样?然后是全局变量。当函数在当前范围内查找相关值时,它在看什么?