【JavaScript 报错】未捕获的范围错误:Uncaught RangeError

news2024/9/25 23:25:21

在这里插入图片描述

🔥 个人主页:空白诗

在这里插入图片描述

文章目录

    • 一、错误原因分析
      • 1. 递归调用次数过多
      • 2. 数组长度超出限制
      • 3. 数值超出允许范围
    • 二、解决方案
      • 1. 限制递归深度
      • 2. 控制数组长度
      • 3. 检查数值范围
    • 三、实例讲解
    • 四、总结

在这里插入图片描述

Uncaught RangeError 是JavaScript中常见的一种错误,通常发生在数值超出其允许范围时,例如递归次数过多或数组长度超过最大限制。本文将详细介绍 Uncaught RangeError 错误的常见原因及其解决方案。


一、错误原因分析

1. 递归调用次数过多

当递归调用次数过多,超过了JavaScript引擎的最大调用堆栈限制时,会抛出 RangeError 错误。

function recurse() {
  recurse();
}
recurse(); // Uncaught RangeError: Maximum call stack size exceeded

2. 数组长度超出限制

当尝试设置一个超出JavaScript引擎允许范围的数组长度时,会抛出 RangeError 错误。

let arr = [];
arr.length = 4294967296; // Uncaught RangeError: Invalid array length

3. 数值超出允许范围

当数值超出JavaScript允许的范围时,也会抛出 RangeError 错误。

let num = Number.MAX_SAFE_INTEGER + 1;
console.log(num.toPrecision(500)); // Uncaught RangeError: toPrecision() argument must be between 1 and 100

二、解决方案

1. 限制递归深度

在递归函数中添加终止条件,避免无限递归。

function recurse(count) {
  if (count > 10) return; // 终止条件
  recurse(count + 1);
}
recurse(0); // 正确

2. 控制数组长度

避免设置过大的数组长度,确保数组长度在合理范围内。

let arr = [];
arr.length = 1000; // 正确
console.log(arr.length); // 1000

3. 检查数值范围

在对数值进行操作时,确保数值在JavaScript允许的范围内。

let num = 1.23;
console.log(num.toPrecision(10)); // 正确

三、实例讲解

以下是一个完整的实例,通过前述的各种方法来避免和处理 RangeError 错误:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Uncaught RangeError 示例</title>
</head>
<body>
  <script>
    // 限制递归深度
    function recurse(count) {
      if (count > 10) return; // 终止条件
      recurse(count + 1);
    }
    recurse(0); // 正确

    // 控制数组长度
    let arr = [];
    arr.length = 1000; // 正确
    console.log(arr.length); // 1000

    // 检查数值范围
    let num = 1.23;
    console.log(num.toPrecision(10)); // 正确
  </script>
</body>
</html>

通过以上方法和实例,我们可以有效地避免和处理 Uncaught RangeError 错误,提升代码的健壮性和可维护性。


四、总结

Uncaught RangeError 是JavaScript开发中常见的一类错误,通常是由于数值超出其允许范围引起的。通过限制递归深度、控制数组长度、检查数值范围等方法,可以有效地避免和处理这类错误。希望本文对你理解和解决 Uncaught RangeError 错误有所帮助。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年06月CCF-GESP编程能力等级认证C++编程三级真题解析

本文收录于专栏《C等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里。订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级&…

IO模型理论学习

1、什么是IO 计算机视角下的io AIO

Redis命令详解以及存储原理

Redis是什么 远程字典服务 分布式场景重的一个单独的节点。请求回应的模式&#xff1a;发起请求&#xff0c;处理之后得到回应的结果。字典的形式存储&索引数据。 内存数据库 数据在内存中&#xff0c;不可以出现需要的内存不在内存中而在磁盘中速度快&#xff0c;内存100…

智能家居开发新进展:乐鑫 ESP-ZeroCode 与亚马逊 ACK for Matter 实现集成

日前&#xff0c;乐鑫 ESP-ZeroCode 与亚马逊 Alexa Connect Kit (ACK) for Matter 实现了集成。这对智能家居设备制造商来说是一项重大进展。开发人员无需编写固件或开发移动应用程序&#xff0c;即可轻松设计符合 Matter 标准的产品。不仅如此&#xff0c;开发者还可以在短短…

goaccess分析json格式日志

一.安装使用yum安装&#xff0c;yum install goaccess 二.主要介绍格式问题 1.nginx日志格式如下&#xff1a; log_format main escapejson {"time_local":"$time_local", "remote_addr":"$remote_addr", "r…

C:数据结构---算法

1.1排序算法 稳定排序 不稳定排序 ①冒泡排序&#xff08;稳定&#xff09; 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对 ②选择排序 在未排序序列中找到最小&#xff08;大…

2.The DispatcherServlet

The DispatcherServlet Spring的Web MVC框架与许多其他Web MVC框架一样&#xff0c;是请求驱动的&#xff0c;围绕一个中央Servlet&#xff08;即DispatcherServlet&#xff09;设计&#xff0c;该Servlet将请求分派给控制器&#xff0c;并提供其他功能以促进Web应用程序的开发…

sqlmap使用之-post注入、head注入(ua、cookie、referer)

1、post注入 1.1、方法一&#xff0c;通过保存数据包文件进行注入 bp抓包获取post数据 将数据保存到post.txt文件 加上-r指定数据文件 1.2、方法二、通过URL注入 D:\Python3.8.6\SQLmap>python sqlmap.py -u "http://localhost/login.php" --data "userna…

《C语言程序设计 第4版》笔记和代码 第十一章 指针和数组

第十一章 指针和数组 11.1 指针和一维数组间的关系 1 由于数组名代表数组元素的连续存储空间的首地址&#xff0c;因此&#xff0c;数组元素既可以用下标法也可以用指针来引用。 例11.1见文末 2 p1与p在本质上是两个不同的操作&#xff0c;前者不改变当前指针的指向&#xf…

C++ | Leetcode C++题解之第230题二叉搜索树中第K小的元素

题目&#xff1a; 题解&#xff1a; class MyBst { public:MyBst(TreeNode *root) {this->root root;countNodeNum(root);}// 返回二叉搜索树中第k小的元素int kthSmallest(int k) {TreeNode *node root;while (node ! nullptr) {int left getNodeNum(node->left);if…

htb_PermX

PermX 端口开放 80,22 子域名扫描 ffuf -u http://permx.htb -H host: FUZZ.permx.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fc 301,302 -mc allwww lms 访问lms.permx.htb chamilo 查找cve CVE-2023-4220 Chamilo LMS 未经身份验证的…

代码随想录算法训练营第三十一天|动态规划:01背包理论基础、01背包理论基础(滚动数组)

动态规划&#xff1a;01背包理论基础 1. dp[i][j]: 表示0到i个物品放入容量为j的背包中&#xff0c;价值总和最大是多少 2. dp[i][j]的状态取决于&#xff0c;第i个物品要不要放入这个背包。 不放物品i&#xff1a;dp[i-1][j] (其实就是当物品i的重量大于背包j的重量时&…

Golang | Leetcode Golang题解之第229题多数元素II

题目&#xff1a; 题解&#xff1a; func majorityElement(nums []int) (ans []int) {cnt : map[int]int{}for _, v : range nums {cnt[v]}for v, c : range cnt {if c > len(nums)/3 {ans append(ans, v)}}return }

Mediapipe-姿态估计实例

Mediapipe简介 Mediapipe 是由 Google Research 开发的一款开源框架&#xff0c;旨在帮助开发者轻松地构建、测试和部署复杂的多模态、多任务的机器学习模型。它特别擅长于实时处理和分析音频、视频等多媒体数据。以下是 Mediapipe 的一些关键特点和组件&#xff1a; 关键特点…

【Unity2D 2022:UI】制作主菜单

一、创建主菜单游戏场景 1. 在Scenes文件夹中新建一个游戏场景Main Menu 2. 为场景添加背景 &#xff08;1&#xff09;创建画布Canvas &#xff08;2&#xff09;在Canvas中创建新的空游戏物体Main Menu &#xff08;3&#xff09;在Main Menu中新建一个图像游戏物体Backgrou…

Java项目中,常用的SQL语句

常用的命令&#xff1a; 1.数据的增删改查 1.插入数据(进行注册&#xff09; 语法 1&#xff1a; --第一种&#xff1a; INSERT INTO 表名(列名 1,列名 2, …) ; insert into tablename(member1,member3) valuse(,); --第二种&#xff1a; INSERT INTO 表名 VALUES(值 1,值 …

Linux工具篇:yum

前言&#xff1a; 目录 前言&#xff1a; Linux 软件包管理器 yum yum是什么&#xff1f; 什么是软件包&#xff1f; Linux系统&#xff08;centos&#xff09;的生态&#xff1a; 那我的yum是怎么找到对应的软件呢&#xff1f; 关于 rzsz yum查看软件包&#xff08;安装…

Python task

def wordcount(text):# 将文本分割成单词列表&#xff0c;并转换为小写words text.lower().split()# 初始化一个空字典用于存储单词计数word_counts {}# 遍历单词列表中的每个单词for word in words:# 如果单词在字典中&#xff0c;则计数加1&#xff0c;否则将单词加入字典并…

配置sublime的中的C++编译器(.sublime-build),实现C++20在sublime中的使用,小白教程

一&#xff0c;前期准备 首先我们需要准备一下 C 环境&#xff0c;当然如果你觉得你当前的C环境配置好了&#xff0c;并且C的版本也能完成您日常的使用需求&#xff0c;您可以使用下面两条命令对C的版本进行查询 g -vg --version通过返回的版本简单的判断是否能解决您的需求&…

Delta的最新更新可让iPad用户同时模拟多款游戏

Delta iOS 应用程序发布了一个更新&#xff0c;引入了复古 游戏模拟器重新设计的标识&#xff0c;以及原生 iPad 支持&#xff0c;允许用户同时玩多个 游戏。 据 Delta 开发者 Riley Testut 称&#xff0c;欧盟用户可以立即通过AltStore PAL 下载更新&#xff0c;但其他用户则需…