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