我有一个while循环,当我使用while(x > 0)
这样的条件时,它可以工作,但是当我将它改为while(x == true)
或while(x)
时,它会变成无限循环,尽管我有一个将变量改为false
的条件。
下面是我的那部分代码的设置。
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; }
}
总体而言,我正在开发一个函数来做加法,就像我们在学校里学到的在纸上做加法的方法一样,“带着1过去”。我试图告诉while循环,当当前数字的.length
小于2时停止运行,这表明它是一个单位数,不需要携带任何其他数字。在这种情况下,while(x > 0)
的方法将不起作用,因为它一直运行在我希望它停止的地方。
我仔细检查了MDN上的语法,在这里遇到了一些文章,人们错误地使用x = true
而不是x == true
或x === true
。有没有人能发现我做错了什么?
更新我刚刚尝试将while循环改为while(appendNums[incAmount] > 1)
,但它仍然进入无限循环。
发布于 2018-08-27 05:44:00
Number(appendNums[incAmount - 1]) + Number(numSplitter[0])
会在某个时刻返回NaN
,因为您不检查数组边界。
通过使用equation.toString()
并将其插入到appendNums[incAmount -1]
中,currentNum在下一次迭代中将始终是字符串"NaN"
。
由于字符串"NaN“的长度为3,因此currentNum.length > 1
始终为true。
https://stackoverflow.com/questions/52030254
复制相似问题