You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现range函数时遇RangeError: Invalid array length报错求助

修复RangeError: 无效的数组长度错误及参数校验实现

错误原因分析

你的代码未实现题目要求的参数校验逻辑,当传入非法参数时会触发异常:

  • 若传入step=0且start<=end,循环条件i <= end会永远成立,数组被无限添加元素,直到超出JavaScript允许的最大数组长度(2^32 - 1),触发RangeError: 无效的数组长度。
  • 其他非法场景(如start>end、参数未定义)也会导致不符合预期的结果或潜在异常。

修复后的代码

按照题目要求添加完整参数校验,不满足条件时直接返回空数组:

function range(start, end, step) {
  // 校验所有参数为整数、start不大于end、step大于0
  if (typeof start !== 'number' || !Number.isInteger(start) ||
      typeof end !== 'number' || !Number.isInteger(end) ||
      typeof step !== 'number' || !Number.isInteger(step) ||
      start > end || step <= 0) {
    return [];
  }
  
  const result = [];
  for (let i = start; i <= end; i += step) {
    result.push(i);
  }
  return result;
}

// 测试用例
console.log(range(0, 10, 2)); // 输出 [0, 2, 4, 6, 8, 10]
console.log(range(5, 3, 1)); // 输出 [](start>end)
console.log(range(0, 10, 0)); // 输出 [](step不大于0)
console.log(range(0)); // 输出 [](参数未完全定义)

关键校验点说明

  • 确保start、end、step均为整数类型(符合题目要求的整数参数)
  • 校验start <= end,避免反向遍历场景
  • 校验step > 0,防止无限循环或无效步长

内容的提问来源于stack exchange,提问作者Joshua Ramirez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:12:26