Javascript:由布尔值操作的while循环会创建无限循环

时间:2018-08-26 21:05:28

标签: javascript

当我使用诸如instanceA之类的条件时,我有一个while循环,但是当我将其更改为while(x > 0)while(x == true)时,尽管我有条件,它仍会变成无限循环将该变量更改为while(x)

这是我的那部分代码的设置方式。

false

总的来说,我正在开发一种函数来执行加法操作,就像我们在学校里被教导用纸做“随身携带”那样。我试图告诉while循环在当前数字的let appendNums = ['8','2','8','14'], //for testing purposes carryCheck = true, incAmount = 0; incAmount = appendNums.length - 1; while(carryCheck){ let currentNum = appendNums[incAmount]; if(currentNum.length > 1){ let numSplitter = currentNum.split(''), equation = Number(appendNums[incAmount - 1]) + Number(numSplitter[0]); appendNums[incAmount] = numSplitter[1]; appendNums[incAmount - 1] = equation.toString(); incAmount = incAmount - 1; } else{ carryCheck = false; break; } } 小于2时停止运行,这表明它是一个数字,不需要携带其他任何东西。在这种情况下,.length的工作方式将行不通,因为它不断超出我希望的停止位置运行。

我仔细检查了MDN的语法,并在此处发现了一些错误,使人们误以为while(x > 0)而非x = truex == true。有人可以在这里发现我在做什么错吗?

更新 我只是尝试将while循环更改为x === true,但仍然进入无限循环。

1 个答案:

答案 0 :(得分:0)

Number(appendNums[incAmount - 1]) + Number(numSplitter[0])有时会返回NaN,因为您没有检查数组范围。
通过使用equation.toString()并将其插入appendNums[incAmount -1],在下一次迭代中,currentNum将始终是字符串"NaN"
由于字符串“ NaN”的长度为3,因此currentNum.length > 1将始终为true。