两者都是一样的。那么它们之间有什么区别呢?
let a=NaN;
let b=2.2
console.log(a==a?a:b);
console.log(a?a:b);
答案 0 :(得分:8)
第一个语句将始终返回true
,但a
为NaN
为什么
NaN == NaN
会返回false?
因为JS规范says so:
- 如果Type(x)是Number,那么
- 如果x为NaN,则返回false。
- 如果y为NaN,则返回false。
仅当true
不是a
变量时,第二个语句才会返回falsy
。
当我说falsy
我的意思是未定义, null , 0 ,''。 falsy 值是在布尔上下文中进行评估时将转换为>的值。
在JavaScript中,truthy值是在布尔上下文中计算时被视为true的值。除非将它们定义为假(即,除了false,0,“”,null,undefined和NaN),否则所有值都是真实的。
虚假值是在布尔上下文中计算时转换为false的值。
答案 1 :(得分:0)
a == a返回布尔值而 a只是一个数字。
a == a始终为真,而a为真(可以这样称)只有当a为非0
时--------------------------------------- EDIT ------- --------------------------------
在你的代码中输入a = 0,你会看到差异