有人能解释一下下面会发生什么吗?
var i = 5;
while(--i){
console.log(i);
}
事情是while循环一直持续到1(控制台记录4,3,2,1)
我知道如果我检查1或0为真,我会得到以下结果
0 == true>假
1 == true>真
我不明白当数字是4时会发生什么?这怎么样?
由于检查4是否会产生以下结果
4 == true>假
答案 0 :(得分:3)
如上所述:
4是javascript中的真值:
if (4) {
console.log(true);
} else {
console.log(false);
}
这将打印true
另一种看法:
0 and true = false
1 and true = true
4 and true = true
truthy的文档:https://developer.mozilla.org/en/docs/Glossary/Truthy
在JavaScript中,truthy值是在布尔上下文中求值时转换为true的值。所有值都是真实的,除非它们被定义为假(即,除了false,0,"",null,undefined和NaN)。
4 != true
的原因是真值被强制转换为数字。所以事实上4 == true + true + true + true
答案 1 :(得分:2)
任何非零数字都被视为TRUE。
所以在你的循环中,i
从5开始。在第一次迭代i
减少1(由--i
),结果(4)被测试为真正。因此,它进入WHILE循环并记录i
(4)的值。然后WHILE循环返回start并再次将i
的值减1,变为3.这也被视为TRUE,从而再次进入循环。
只有i
达到0才会被视为FALSE,从而退出WHILE循环。