関数の配置は、スコープ内のクロージャのパフォーマンスに影響を与えますか?もしそうなら、これらの機能を配置するのに最適な場所はどこですか?そうでない場合、クロージャによる暗黙の関連付けは、関数を論理的に別の場所に配置するのに十分な理由ですか?
たとえば、fooがlocalStateの値に依存しない場合、 localStateがfooからアクセス可能であるという事実は、fooの実行時間、メモリ使用量などに影響を及ぼしますか?
(function(){
var localState;
function foo(){
// code
}
function bar(){
// code
return localState;
}
})();
言い換えれば、これはより良い選択でしょうか?もしそうなら、なぜですか?
(function(){
function foo(){
// code
}
var localState;
function bar(){
// code
return localState;
}
})();
ダリウスベーコンは、 localStateはブロック内のどこからでもアクセスできるため、上記の2つのサンプルは同一であると以下に示唆しています。ただし、fooがブロックの外部で定義されている以下の例は、別のケースである可能性があります。どう思いますか?
function foo(){
// code
}
(function(){
var localState;
function bar(){
// code
foo();
return localState;
}
})();