概述
JavaScript超出数组长度不报错
今天,在做题的时候,遇到了这样一个问题
while (sum < target) {
right++;
sum += nums[right];
}
这里while循环没有添加对right索引超出数组长度时的限制,但依然没有报错,程序可以正常运行。
这里检查了下原因,发现当right超出范围时,nums[right]输出是undefined
console.log(nums[nums.length]) //undefined
当undefined与数相加时,变成NaN
console.log(10+nums[nums.length]) // NaN
在while循环的判断条件中,NaN与数字进行比较会直接返回false,因此可以退出循环,没有影响结果。
console.log(NaN>10) //false
题目:209. 长度最小的子数组
https://leetcode-cn.com/problems/minimum-size-subarray-sum/
在尝试简写成后缀递增,忘记将right初始值从-1改成0了,JavaScript无法通过负的索引遍历数组,会直接返回undefined,因此结合上面的例子,会直接退出第一个小while循环,right又一直是不变的,会陷入死循环。
错误示范:
var minSubArrayLen = function(target, nums) {
let left = 0, right = -1;
let sum = 0;
let res = nums.length+1;
while (right<nums.length) {
while (sum < target) {
// right++;
sum += nums[++right];
}
while (sum>=target) {
res = (res>right-left+1)? right-left+1 : res;
sum -= nums[left];
left ++;
}
}
return res>nums.length ? 0 : res;
}
最后
以上就是寒冷向日葵为你收集整理的JavaScript超出数组长度不报错JavaScript超出数组长度不报错的全部内容,希望文章能够帮你解决JavaScript超出数组长度不报错JavaScript超出数组长度不报错所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复