Javascript var未定义=真;

Javascript var未定义=真;,javascript,Javascript,我正在用这个恶意JavaScript行进行一些实验:var undefined=true JavaScript中每个未初始化的变量都有undefined的值,这只是一个保存特殊值'undefined'的变量,因此下面应该执行警报: var undefined = true, x; if (x) { alert('ok'); } 但事实并非如此,我的问题是为什么 在进一步的实验中,我尝试了以下方法: var undefined = true, x = undefin

我正在用这个恶意JavaScript行进行一些实验:
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;