Javascript var未定义=真;
我正在用这个恶意JavaScript行进行一些实验:Javascript var未定义=真;,javascript,Javascript,我正在用这个恶意JavaScript行进行一些实验:var undefined=true JavaScript中每个未初始化的变量都有undefined的值,这只是一个保存特殊值'undefined'的变量,因此下面应该执行警报: var undefined = true, x; if (x) { alert('ok'); } 但事实并非如此,我的问题是为什么 在进一步的实验中,我尝试了以下方法: var undefined = true, x = undefin
var undefined=true代码>
JavaScript中每个未初始化的变量都有undefined
的值,这只是一个保存特殊值'undefined'
的变量,因此下面应该执行警报:
var undefined = true,
x;
if (x) {
alert('ok');
}
但事实并非如此,我的问题是为什么
在进一步的实验中,我尝试了以下方法:
var undefined = true,
x = undefined;
if (x) {
alert('ok');
}
这一次,执行警报
因此,我的问题是……既然在第一个代码段中,x
保留了未定义的
(因为它没有初始化),为什么没有执行警报
?奇怪的是,当明确指出x
是undefined
(x=undefined
)时,警报执行…仅声明一个名为“undefined”的变量并不意味着覆盖了本机“undefined”值的内置概念
想象一下,如果Java允许您使用“null”作为标识符。嗯,我想Java没有Javascript那样的强制。无论如何,Javascript语句
if (x) alert("foo");
涉及将“x”的值隐式强制为布尔值。该值未定义,因此将其强制为“boolean”会导致false
名为undefined
的变量与名为undefined
的值之间存在差异
var undefined = true,
x;
var undefined = true,
x = undefined;
在本例中,变量未定义
设置为值true
,x
设置为值(不是变量!)未定义
var undefined = true,
x;
var undefined = true,
x = undefined;
在此示例中,变量undefined
也设置为值true
,并且x
设置为变量undefined
中包含的值(即true
)
因此,虽然您可以声明一个名为未定义
的变量,但无法更改未初始化变量设置为未定义
的值这一事实未初始化变量将获得特殊值未定义
。当您将一个变量分配给另一个变量时,您给它一个字符串,该字符串引用您在当前范围内定义的变量。在本例中,您定义了一个名为undefined
的变量,因此JavaScript引擎将首先查看变量,查看您是否命名了一个undefined
,然后将其分配给该变量。Hehe;如果变量未定义
是值未定义
,会发生什么情况?@Pindatjuh:与变量有任何其他名称相同。名为undefined
@Andreas Grech的变量没有什么特别之处-奇怪的是,“\n\t”==true
实际上也是false
。实际上,JavaScript中的true概念是除null、undefined、空字符串“”、NaN
、0
和false
之外的所有值
var undefined = true,
x;
var undefined = true,
x = undefined;