我在JavaScript中运行以下代码
let i = 3;
while (i) {
console.log(i--);
}
因为while(i)
与while(i>0)
不一样,所以我期望结果为3,2,1,0,-1,-2,......
但实际结果是3,2,1。谁能向我解释这个案子?我很困惑。
答案 0 :(得分:2)
while循环一直运行,直到检查条件为false。
在这种情况下,它是i
的值。
由于Javascript是动态类型的(即 - 我们在定义变量时没有定义类型),i
的值将从它当前所在的类型转换为布尔值。
在这种情况下,您将数值设置为i
。数字0被认为是错误的。因此,打破while循环。
您可以参考here获取错误值的完整列表。
答案 1 :(得分:-1)
while循环运行,直到其条件设置为false。请注意,所有语句(如while,if和ternaries)都以相同的方式处理条件。更好地理解如何用最简单,最快捷的方式测试三元组。
我经常在js控制台上运行如下的内容,例如chrome(ctrl + j)
1?2:3;
0?2:3;
5?2:3;
"Hello"?2:3;
""?2:3;
等等。这些是条件语句,第一个数字作为条件,第二个(2)是如果它是真的将被返回的内容,第三个(3)是它将返回的内容,如果它是假的。请注意,2和3只是随机数。
在您显示的示例中,i
是一个整数。对于整数,仅将0视为false。