我是靠谱客的博主 寒冷向日葵,最近开发中收集的这篇文章主要介绍JavaScript超出数组长度不报错JavaScript超出数组长度不报错,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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超出数组长度不报错所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部