This question already has answers here:
What's the difference between window.x and x?
(2 个回答)
5年前关闭。
为什么这个:
给出:
虽然这有效:
不是说:
相当于:
相当于:
只要在之外是一个函数,因为整个代码都被一个
为了更清楚:我确实知道全局变量与成员变量之间的区别,但我想知道为什么检索未声明的变量会产生像
(2 个回答)
5年前关闭。
为什么这个:
if(x)
alert('Available');
给出:
ReferenceError: x is not defined
虽然这有效:
if(window.x)
alert('Available');
不是说:
var x = "";
相当于:
x = "";
相当于:
window.x = "";
只要在之外是一个函数,因为整个代码都被一个
with(window)
包围了?为了更清楚:我确实知道全局变量与成员变量之间的区别,但我想知道为什么检索未声明的变量会产生像
x;
这样的 ReferenceError 而 window.x
给出未定义?他们不应该都给 undefined 吗? 最佳答案
window.x
“有效”的原因(但它不应该满足 if
条件)是因为在访问对象的不存在属性时,返回的是 undefined,而不是异常。直接访问变量则相反。这很可能是因为如果变量在定义之前被访问,则程序可能存在不应被忽视的错误。
此外,var
定义了一个只能在封闭范围内访问的变量。省略关键字会导致创建全局变量。
关于javascript - 为什么 if(x) 与 if(window.x) 不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25005869/