変数を暗黙的に呼び出すのではなく、すべての変数を親スコープに設定する習慣があります。
function outer() {
var x, y;
function inner() {
var x = this.x;
x = ...// doing stuff here
y = ....// implicit calling parent variable
}
}
変数を間違って入力した場合、グローバル空間に移動しないようにします。しかし、プライベート関数内で変数を宣言すると、this私が返されるようですundefined:
function f() {
var x = [0];
function f1() {
console.log('f1:', this.x, x);
f2();
}
function f2() {
console.log('f2:', this.x, x);
}
return { x:x , f1:f1 };
}
var foo = f();
foo.f1();
//output
f1: [0] [0]
f2: undefined [0]
私がそれを正しく理解していれば、 とを使用して外側のスコープにアクセスする必要があるため、発生しないはずf1です。ここで欠けている概念はありますか? それとも、私が今のところ生きなければならないものですか?f2this
f1更新: 明確にするために、私の主な関心事は、 と の間に違いがある理由f2です。f2内部作業を行うため、非表示にしておくことを好みます。また、他の開発者が から何かを宣言するときに使用しないでくださいf()。