Javascript中的随机无限循环



我遇到了一个问题,我正在写一个挑战的代码。
我写的代码进入了一个无限循环,我不知道哪里出了问题。

var wiggleMaxLength = function(nums) {
let wiggleSteps = 1;
let actualDiff, pastDiff, i;
for (i = 1; i < nums.length; i++) {
actualDiff = (nums[i] - nums[i - 1])
if (nums[i] = 0) {
nums.splice(i, 1);
i--;
continue;
} else if ((pastDiff > 0 && actualDiff < 0)  || (pastDiff < 0 && actualDiff > 0) || (i = 1)) {
pastDiff = actualDiff;
wiggleSteps++;
} else {
break;
}
}
return wiggleSteps;
};

第6行有一个错别字(=而不是=====)

if (nums[i] = 0)

我想你没有看到它。

这将值0赋给nums[i],而不是将nums[i]与0进行比较。

因此,您应该将if更改为
if (nums[i] == 0)

if (nums[i] === 0)

注意在第9行第3个条件i = 1而不是i == 1i === 1中还有一个额外的拼写错误,这就是导致无限循环的原因(因为计数器'i'总是被重新分配给1)。程序总是运行在else if分支上。

最新更新