変数を暗黙的に呼び出すのではなく、すべての変数を親スコープに設定する習慣があります。
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
です。ここで欠けている概念はありますか? それとも、私が今のところ生きなければならないものですか?f2
this
f1
更新: 明確にするために、私の主な関心事は、 と の間に違いがある理由f2
です。f2
内部作業を行うため、非表示にしておくことを好みます。また、他の開発者が から何かを宣言するときに使用しないでくださいf()
。