これがあまりにも素朴であれば申し訳ありませんが、別の質問に答えようとしている間にこれに固執しています。 :)下のコードでは、bar.x
とbar.y
の両方に似ています/同じ機能体があります(関数が最初に宣言されている場所は?)。そしてfoo
のスコープはy
に割り当てられても失われますが、それでもbar.y()
と呼ぶと、なぜ閉じ込め内にglobal_var
が入りませんか? x
とy
の両方に300
を出力できる方法はありますか?これらの2つの機能の範囲の違い
global_var = 2
var foo = function(){
console.log("y", global_var)
}
var bar = (function b(){
var global_var = 300;
var x = function(){
console.log("x",global_var);
};
var y = foo;
return {x: x, y: y};
})();
bar.x(); //300
bar.y(); //2
setTimeout(bar.x); //300
setTimeout(bar.y); //2
「this」とレキシカルスコープの私のコンセプトが混ざっていると思います。 – sabithpocker