Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么除了0以外的所有数字都会在JavaScript中传递if语句?_Javascript - Fatal编程技术网

为什么除了0以外的所有数字都会在JavaScript中传递if语句?

为什么除了0以外的所有数字都会在JavaScript中传递if语句?,javascript,Javascript,这是我一直想知道的事情。根据MDN,在JavaScript中,“如果指定的条件为true,if语句将执行一条语句”。那么,为什么这项声明获得通过呢 var a = 7; if( a ) { alert('true'); } else { alert('false'); } 这个变量既不是真的也不是假的,那么为什么它会提示“真”而不是跳过整个if语句呢?在计算机中,一切都是数字。布尔值,通常只有一位:0或1 var a = 7; if( a ) { alert('true

这是我一直想知道的事情。根据MDN,在JavaScript中,“如果指定的条件为true,if语句将执行一条语句”。那么,为什么这项声明获得通过呢

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

这个变量既不是真的也不是假的,那么为什么它会提示“真”而不是跳过整个if语句呢?

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

var a = 7;
if( a ) {
    alert('true');
} else {
    alert('false');
}
但计算机使用不止一位来存储数据,所以布尔值大于0或1,但也大于255、42或25,同时还必须通过一个简单的测试

因此,按照惯例,0为假,任何其他值均为真。

“为真”表示“计算结果为真值的表达式“不”与布尔对象
true
”完全相等

形式语言可以找到

让exprRef作为计算表达式的结果
如果 ToBoolean(GetValue(exprRef))为true,则返回 评估第一个语句
否则,
返回 评估第二个语句

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


例如,如果在Javascript中变量
未定义
,则
如果
将其计算为
,则以下值始终为假:

false
0 (zero)
"" (empty string)
null
undefined
NaN (a special Number value meaning Not-a-Number!)
所有其他值都是真实值,包括“0”(引号中为零)、“false”(引号中为false)、空函数、空数组和空对象


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

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

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


它与字母的工作方式相同,除了if语句将字母从ASCII转换为二进制:“A”=0100 0001(在ASCII中注册为65)。另一方面,没有输入将返回假语句。

因为它是这样定义的。只有以下语句返回假语句。false,0,“,null,未定义,Nanah我不知道“falsy”是个东西。谢谢