为什么除了0之外的所有数字都会用JavaScript传递if语句
Why do all numbers except 0 pass an if statement in JavaScript?
这是我一直想知道的事情。根据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是undefined
或null
,在这种情况下,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。
- MVC 3页面导航和使用javascript传递参数
- 如何在提交后将变量从javascript传递到php
- 将值从Javascript传递并返回到VBScript,ASP中的Vice Versa
- 将变量值从一个javascript传递到另一个javascript
- 为什么数据没有通过javascript传递到php
- 将位置变量从Javascript传递到PHP函数
- 如何使用jQueryPOST将get变量从JavaScript传递到PHP-Mysql
- 将文件从Javascript传递到Java Uploader Applet
- 如何将trick代码从javascript传递到trick文件
- 通过Javascript传递请求参数
- 如何将对象数组从javascript传递到服务器
- 无法将整数从javascript传递到npapi插件
- 将数据从Javascript传递到Laravel控制器
- 将CSV字符串从Javascript传递到PHP
- 如何将函数对象从javascript传递到Polymer元素
- 从服务器端经典 asp 和客户端 javascript 传递字符串
- 使用 javascript 传递逗号分隔的变量
- 如何使用外部接口将参数从 JavaScript 传递到 AS3
- 将变量从 JavaScript 传递到 Objective-C - JSON
- 访问所选记录的网格值并使用 javascript 传递到新窗口