我已经在控制台中尝试了以下操作
var someVar1 = 1;
someVar1; // 1
someVar1 in window; // true
var someVar2 = 2;
someVar2 in this; // true
someVar2 in window; // true
delete someVar1;
someVar1; // 1
someVar1 in window; // true
this === window; // true
var someVar3 = 3;
someVar3 in window; // false
someVar3; // 3
someVar3 in window; // false
someVar3 in window
为什么要评估false
?
在Chrome 67.0.3396.99版浏览器上执行的测试。
答案 0 :(得分:4)
您期望someVar3 in window
返回true
。您没有得到true
,因为您正在使用in
运算符,其值是someVar3
(即3
),而不是其标识符"someVar3"
。>
您的代码示例归结为:
var someVar1 = 1;
var someVar3 = 3;
console.log(someVar1 in window);
console.log(someVar3 in window);
您实际上是在检查1 is in window
和3 is in window
。并且window[1]
返回window
,而window[3]
是undefined
(在您的控制台中尝试)。
要检查变量是否已声明和定义,可以执行以下操作:
window.someVar1
或者如果您在示波器内,则可以使用:
typeof someVar1 !== "undefined"
window[1]
返回Window
window[0]
,window[1]
等...返回帧中对Window
对象的引用。有关更多详细信息,请参见Window.frames
。