Q: 別の関数内にある関数内にあるローカル スコープの名前は何ですか?
説明させてください:
使用したい命名規則に問題があります。以下に簡単な例を示します。
!function($, window, undefined) {
var Variables = {};
Variables.X = 1;
function myFunction() {
var local = {};
local.X = 2;
$('.myClass').each(function() {
var local = {};
local.X = 3;
});
}
}(jQuery, window);
ここで、「変数」というオブジェクトを使用して、関数間で共有されるすべてのオブジェクトを格納することにしました。必要に応じて、外側の !function() {} 定義内に限定されたグローバル スコープ。
そして、「local」というオブジェクトを使用して、関数内にあるすべてのオブジェクトを格納することにしました。私の問題は、関数内の関数の範囲です。関数を一意にするために、関数の名前を何らかの方法で組み込む必要があると思います。この簡単な例では、local.X が 2 つの別個の変数であることを知っています。しかし、人間が読みやすいように、個別に名前を付けたいと思います。今から 6 か月後に戻って、local.X とは何かを考えたくありません。
問題に加えて、それは匿名関数であるため、「ローカルスコープ」を一意に識別できるようにするために関連付ける関数名がありません。コールバック関数内で変数が必要な場合は、コールバック関数に名前を付けて、ローカル スコープをその名前に関連付けるというルールを作成する必要があるかもしれません。