我习惯将所有变量设置为其父范围,而不是隐式调用它们:
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()
.