while(0 = 0)的计算结果为false

o-o*_*o-o 10 javascript operators

b=10;
while(a=b) {
  b--;
  if(b==-10)break;
}
Run Code Online (Sandbox Code Playgroud)

B从10变为-10.在我的世界中,while语句a = b应该始终为真(因为分配总是"顺利").事实并非如此.循环停止时,b的值为0.

在我的世界中,当if语句开始时,它应该传递0并一直到-10.

我误解了一些重大的东西吗?(在IE8和Adobe Acrobat中测试的代码)

Bri*_*ung 21

赋值的值是赋值的值,因此您可以链接赋值a = b = 2,例如,当b=0值为a=b0时.

  • +1这是重要的事情,在大多数答案中都没有说清楚.赋值操作的"值"是指定的值,而不是可以判断操作是否"顺利"的值. (5认同)

And*_*y E 9

0是一个假值,0 == false是真的,所以只要b命中0,那么a = b的计算结果为假,循环就会中断.

一个简单的解决方案就是

while ((a=b) > -10) {
Run Code Online (Sandbox Code Playgroud)

或者在这种情况下,由于break;你可以使用的声明

while (true) {
Run Code Online (Sandbox Code Playgroud)

  • falsy和truthy是类型强制到布尔值的众所周知的描述.我会毫不犹豫地说"官方". (2认同)