3年後の私の質問を見て、より満足のいく答えを提供したいと思います.
内部関数が別の場所で使用される場合は、入れ子にしないでください。明らかな理由で。
function a(){
// ...
}
function b(){
// ...
a();
}
a();
b();
内部関数が他の場所で使用されない場合は、ネストします。見た目がすっきりし、外部関数の論理的整合性が向上します (関連するものは視覚的に囲まれています)。
function b(){
function a(){
// ...
}
// ...
a();
}
b();
内部関数が他の場所で使用されず、外部関数が複数回呼び出される場合は、それからクロージャを作成し、囲まれたスコープで内部関数を定義します。 このようにして、呼び出しごとに再定義されることはありません。これは、内部関数が複雑である場合や、外部関数が何度も呼び出される場合に、より意味があります。
var b = (function b(){
function a(){
// ...
}
return function(){
// ...
a();
};
}());
b();
b();
その他のパフォーマンスへの影響はごくわずかです。