Javascript 为什么`1>;undefined`的计算结果为false?

Javascript 为什么`1>;undefined`的计算结果为false?,javascript,Javascript,我试图在解决编码难题的同时,给出一些条件语句。我记录了两个字符串的字母在不同对象中出现的所有情况。当我试图通过它们的计数来比较它们时,如果计数在另一个对象中未定义,则它的计算结果为false,即使第一个值为truthy 但是, 1>布尔值(未定义)计算结果为true。但是,1>未定义的计算结果为false。行为如此的原因是什么?为了使用比较运算符,两个操作数都必须是数字1已经是,因此必须将布尔值(未定义)(顺便说一句,其计算结果为false)转换为数字。如果是,则会得到0 //首先,将未定义转

我试图在解决编码难题的同时,给出一些条件语句。我记录了两个字符串的字母在不同对象中出现的所有情况。当我试图通过它们的计数来比较它们时,如果计数在另一个对象中未定义,则它的计算结果为false,即使第一个值为truthy

但是,


1>布尔值(未定义)
计算结果为true。但是,1>未定义的计算结果为false。行为如此的原因是什么?

为了使用比较运算符
,两个操作数都必须是数字
1已经是,因此必须将
布尔值(未定义)
(顺便说一句,其计算结果为
false
)转换为数字。如果是,则会得到
0

//首先,将未定义转换为布尔值
设bool=Boolean(未定义)
控制台日志(bool);
//然后把它转换成一个数字
设num=Number(bool);

console.log(num)Javascript在比较通常不应该比较的东西时,会进行很多古怪的转换


1>undefined
将undefined转换为NaN,并且您无法将数字与非数字进行比较,因此任何比较都将返回false
布尔值(undefined)
未定义值转换为其布尔值
等效值
false,然后在比较时将转换为0,您可以通过执行
数字(布尔值)来确认这一点(未定义))
由于1大于0,它返回true。

为什么不在控制台上记录
布尔值(未定义)
?@trincot它的计算结果为false。在这种情况下,1>布尔值(未定义)计算结果为true。这让您感到惊讶?在许多编程语言中,与数字相比,false被视为0。我感到惊讶的是1>undefined计算结果为false。如果您的问题是关于
1>undefined
为什么将其声明为
1>布尔(undefined)