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在控制台常见的报错信息 前言 一.JS的报错类型 二.具体的控制台报错分析 1.语法错误(SyntaxError) (1)违背命名规范 (2)括号不全 (3)关键字赋值 (4)函数 ...
- 【原创】VBA学习笔记(300)VBA 很多工作表函数都只对1维数组有用,用2维数组上经常报错!
1 VBA 很多工作表函数,都只对一维数组有用,用2维数组上经常报错 很多工作表函数都不能对二维数组生效 有时候连错误值都不返回,直接代码中断) 2 举例1:join() 和 split() 函数 只 ...
- c语言给数组赋值 报错,请教为什么给数组赋值会报错
请问为什么给数组赋值会报错? 请问为什么info[index][0]=str;这种赋值语句总是会报错呢? 请高手指教,非常感谢!! #include #include #include int sys ...
- html 数组为空 报错,javascript怎么判断数组是否为空?
javascript判断数组是否为空的方法:通过数组length属性返回数组中元素数目,若为0说明数组为空,若不为0说明数组不为空. 判断数组是否为空实现代码:let arr = [];if (arr ...
- C++:带你搞定数组的疑难杂症--缓冲区溢出;数组越界;为什们打印内容能超出数组长度?
文章目录 前言 Ⅰ- 超出内容存入数组没有? Ⅱ- s[12] 错误还是正确 1.首先谈谈为啥编译不报错? 2.数组下标为负时 3.危险的越界 前言 先给大家看看一段测试: char s[10];ci ...
- 关于C++中数组下标越界不报错的问题
C++中数组下标越界程序并不报错是因为编译器不会对数组下标作越界检查造成的. C语言非常重视运行时的效率,所以没有进行数组越界检查,而C++继承了C的效率要求,自然也不做数组越界检查. ...
- ES 处理日志字段超出 1000 引发的报错
推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...
- Javascript 获取数组长度, 对象成员个数, 字符串数
1.应用场景 主要用于获取数组长度, 对象成员个数, 字符串数. 2.学习/操作 Q1.Javascript怎么得到数组长度(也就是数组的元素个数)? Q2.Javascript怎么获取对象的成员个数 ...
- JavaScript控制台输出警告提示,报错提示和三种弹窗方式
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>& ...
最新文章
- 关于《0 bug -- C/C++商用工程之道》的一处bug
- 服务器安装centos5.5下安装samba服务器以及windows访问samba服务器
- Python之第一个helloworld的代码
- Linux repo 文件学习;
- python:文件路径多级获取
- 人工智能 | 人脸识别研究报告(人才篇)
- 小白 vue-cli 项目打包
- 02 | 日志系统:一条 SQL 更新语句是如何执行的
- 笔记——数据可视化02
- 如何在WebIDE里打开一个HTML5应用
- makefile深度学习(一个工程实例来学习 Makefile)
- python字符串转义序列_Python | 忽略字符串中的转义序列
- 计算机网络体系结构最有影响的标准,浅谈计算机网络中的体系结构
- Android深入浅出系列之实例应用—弹出消息Toast对象的使用纯文本方式(一)
- java 全选 反选取值_全选反选以及获取选中的数据
- ppt矩形里面的图片怎么放大缩小_PPT图片局部放大技巧
- Oracle索引建立原则
- 【数学建模之Python】13.手撕抛物型方程的差分解法(如一维热传导方程)
- wampServer虚拟主机配置
- Python练习---turtle绘图之绘制天安门
热门文章
- Linux之Htop
- 平方数 (sdut oj)
- java xms xmx 默认值,JVM启动参数-Xmx的默认值是多少?
- 王牌技能网站架构服务 Nginx
- 理财指南: 无论工资多少,记得至少要分成六份
- “X Partners计划” 青云和合作伙伴的相乘关系
- 最大化窗口driver.manage().window().maximize();
- 【小程序】微信小程序常用api的使用,附案例(建议收藏)
- Install Notepad++ on Ubuntu
- 红黑树算法原理(从二叉搜索树讲起)