var x = 16;
console.log(this["x"]); // 16
我对此很好,但是:
(function () {
var y = 16;
console.log(this["y"]); // undefined
}());
为什么我们无法通过this
访问变量?!
我知道在分配值时可能会发生这种情况,例如:
(function () {
x = 16; // will assigned as `this["x"] = 16`
console.log(x); // 16;
}());
非全球范围内的var
问题是什么?!
答案 0 :(得分:2)
您应该阅读this
的工作原理。
使用var x = 16
在本地范围内声明变量与执行this.x = 16
不同。前一个例子只是一个局部变量,后者影响局部上下文。
你的例子:
(function () {
var y = 16;
console.log(this["y"]); // undefined
}());
设置一个名为y
的局部变量,但随后查找当前上下文中定义的y
,可能是window.y
。由于局部变量y
与window.y
不同,因此未定义。