「[JavaScript関数]は、参照する可能性のある、囲んでいるスコープで定義されている変数を内部に格納します。」
その変数のセットが何であるかをどのように判断できますか?
たとえば、EffectiveJavaScriptのDavidHermanは、この関数(およびクロージャ)を提供します。
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自体が関数内にある場合はどうなりますか?そして、グローバルがあります。現在のスコープ内で関連する値を探すときに、関数は何を見ていますか?