为什么当条件检查变量变为0时while循环停止?
Why does the while loop stop when condition check variable becomes 0?
谁能告诉我下面发生了什么?
var i = 5;
while(--i){
console.log(i);
}
问题是while循环一直持续到1 (console logs 4,3,2,1)
我知道如果我检查1或0为真,我将得到以下结果
0 == true> false
1 == true>
我不明白的是,当数字是4之类的时候会发生什么?这到底是怎么回事?
因为检查4是否为true将传递以下结果
4 == true> false
如上所述:
4在javascript中是真值:
if (4) {
console.log(true);
} else {
console.log(false);
}
这将打印true
另一种理解方式:
0 and true = false
1 and true = true
4 and true = true
关于真相的文档:https://developer.mozilla.org/en/docs/Glossary/Truthy
在JavaScript中,真值是在布尔上下文中计算时转换为真值的值。所有值都是真值,除非它们被定义为假值(即,除了false、0、"、null、undefined和NaN)。
4 != true
的原因是真值被强制转换成一个数字。所以事实上4 == true + true + true + true
任何非零的数字都被视为TRUE。
在你的循环中,i
从5开始。在第一次迭代中,i
减少了1(通过--i
),并且结果(4)被测试为TRUE。因此,它进入WHILE循环并记录i
(4)的值。然后WHILE循环返回开始并再次将i
的值减少1变为3。这也被视为TRUE,因此再次进入循环。
只有当i
达到0时,它才被视为FALSE,从而退出WHILE循环。
相关文章:
- 基于两个条件退出While循环
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 为什么我的While循环不起作用
- 使用while循环+break是一种可接受的方式;goto;手术的结束
- 如何将while循环中生成的值存储到变量中,以便以后在JQuery中使用
- jquery,while循环在后台运行,同时while循环
- jquery悬停和while循环
- Javascript:用while循环在给定的count参数中重复一个字符串
- 如何修复 while 循环
- Jquery扩展点的宽度,同时通过while循环递增
- 斐波那契序列Javascript做while循环
- 为什么这个while循环不能使用AND逻辑运算符
- bluebird promise的while()循环正确(无递归?)
- JavaScript while循环没有'不能在有条件的情况下工作
- While循环在JavaScript中永远运行
- 逻辑(JSint友好)等效于while循环中的此赋值
- Javascript:用if语句运行while循环,用子句随机生成内容
- 如何使javascript在SQL while循环中回显所有数据
- 使用ajax循环while中的多个表单
- JavaScript 中的无限循环 - while 循环