当我使用诸如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 = true
或x == true
。有人可以在这里发现我在做什么错吗?
更新
我只是尝试将while循环更改为x === true
,但仍然进入无限循环。
答案 0 :(得分:0)
Number(appendNums[incAmount - 1]) + Number(numSplitter[0])
有时会返回NaN
,因为您没有检查数组范围。
通过使用equation.toString()
并将其插入appendNums[incAmount -1]
,在下一次迭代中,currentNum将始终是字符串"NaN"
。
由于字符串“ NaN”的长度为3,因此currentNum.length > 1
将始终为true。