为什么除了0之外的所有数字都会用JavaScript传递if语句

Why do all numbers except 0 pass an if statement in JavaScript?

本文关键字:JavaScript 传递 语句 if 数字 为什么      更新时间:2023-09-26

这是我一直想知道的事情。根据MDN的说法,在JavaScript中,"如果指定的条件为true,则if语句执行语句"。那么,为什么这会通过声明呢?

var a = 7;
if( a ) {
    alert('true');
} else {
    alert('false');
}

该变量既不是true也不是false,那么为什么它会提醒"true"而不是跳过整个if语句呢?

"is true"表示"计算为真值的表达式"not"完全等于布尔对象true"。

形式语言可以在规范中找到。

设exprRef是对表达式求值的结果
如果ToBoolean(GetValue(exprRef))为true,则
返回评估第一个语句
否则,
返回的结果评估第二陈述。

在Javascript中,以下值总是错误的:

false
0 (zero)
"" (empty string)
null
undefined
NaN (a special Number value meaning Not-a-Number!)

所有其他值都是truthy,包括"0"(引号中为零)、"false"(引号内为false)、空函数、空数组和空对象。

如果要在不进行类型转换的情况下与true进行比较,请尝试a === true

在JavaScript中,if(var)不仅计算布尔值,还计算已定义/已初始化或未定义的变量。

例如,如果var是undefinednull,在这种情况下,if会将它们求值为false

正如前面其他人所说,它正在对变量执行布尔测试。布尔值是二进制的;也就是说,唯一可能的值是0和1,其中true=1,false=0。

硬编码到if语句中的值为7=0111,只需要其中一个数字为"1"即可通过测试。

它与字母的工作方式相同,只是if语句将字母从ASCII转换为二进制:"A"=0100 0001(在ASCII中注册为65)。http://www.asciitable.com/)另一方面,任何输入都不会返回错误的语句。

在计算机中,一切都是一个数字。也是布尔值,通常只有一位:0或1。

但计算机使用多个比特来存储数据,所以布尔值大于0或1,也大于255、42或25,同时还必须通过简单的测试。

因此,按照惯例,0为false,任何其他值都为true。