前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >你必须掌握的 7 种 JavaScript 错误类型

你必须掌握的 7 种 JavaScript 错误类型

原创
作者头像
用户8983410
修改于 2021-09-19 12:22:54
修改于 2021-09-19 12:22:54
4.4K0
举报

从浏览器控制台到运行Node.js的计算机终端,我们到处都会看到错误。

这篇文章重点介绍了在JS开发过程中可能遇到的 7 种错误类型。

1、 RangeError 范围错误

当数字超出允许的值范围时,将抛出此错误;或者JS执行进入死循环。

const log = console.log

const arr = [90,88]

arr.length = 90**99

我们有一个数组,带有两个元素的arr。 接下来,我们尝试将数组扩展为包含90 ** 99 = 2.9512665430652753e + 193元素。

这个数字超出了数组最大的长度范围。 运行它会抛出RangeError:

arr.length = 90**99

^

RangeError: Invalid array length

at <anonymous>:3:12

因为我们要增加arr数组的数量超出了JS指定的范围。

2、 ReferenceError 引用错误

当对变量/项目的引用被破坏时,将引发此错误。 那是变量/项目不存在。

const log = console.log

const cat = "cat"

cat

dog

我们有一个变量cat初始化为"cat"。 接下来,我们参考cat变量和dog变量。 cat变量存在,而dog变量不存在。

cat将返回"cat",而dog将引发参考错误,因为在环境记录中找不到名称dog。

dog

^

ReferenceError: dog is not defined

每当我们创建或定义变量时,变量名称都会写入环境记录中。 此环境记录就像键值存储一样,

+-------------+

| Key | Value |

---------------

| cat | "cat" |

+-------------+

每当我们引用变量时,它都会存储程序中定义的变量。 当在记录中找到环境值并提取并返回值时,将以该变量的名称作为关键字搜索环境记录。 调用尚未定义的函数。

现在,当我们创建或定义一个没有赋值的变量时。 该变量以键作为变量名称写入环境记录,但该值将保持未定义状态。

var cat

env record

+-----------------+

| Key | Value |

-------------------

| cat | undefined |

+-----------------+

稍后为变量分配值时,将在env记录中搜索该变量,当找到初始未定义值时,该赋值将被覆盖。

var cat

cat = "cat"

env record

+-------------+

| Key | Value |

---------------

| cat | "cat" |

+-------------+

因此,当在环境记录中找不到变量名时,JS引擎会引发ReferenceError。

+-------------+

| Key | Value |

---------------

| cat | "cat" |

+-------------+

cat // "cat", yes, :) it's there

dog // :( what's this? can't find it

注意:未定义的变量不会抛出ReferenceError,因为它存在于环境记录中只是它的值尚未设置。

1

3.SyntaxError 语法错误

这是我们遇到的最常见的错误。 当我们键入JS引擎可以理解的代码时,会发生此错误。

解析期间,JS引擎捕获了此错误。 在JS引擎中,我们的代码经过不同的阶段,然后才能在终端上看到这些结果。

tokenization 标记化

parsing 解析

interpreting 编译

标记化将代码的源分解为各个单元。 在此阶段,将对数字,关键字,文字,运算符进行整理并分别进行标记。

接下来,生成的令牌流将传递到解析阶段,由解析器处理。 这是从令牌流生成AST的地方。 AST是我们代码结构的抽象表示。

在这两个阶段,即标记化和解析,如果我们代码的语法/源不符合JS的语法规则,则会使阶段失败并引发SyntaxError。 例如,

const log = console.log

let cat h = "cat"

单独的h代表什么? 那里的h破坏了代码。

let cat h = "cat"

^

SyntaxError: Unexpected identifie

因此,我们可以说语法错误发生在解析/编译期间。

4.TypeError 类型错误

当其他NativeError对象中没有一个是失败原因的适当指示时,TypeError用于指示操作失败。

对错误的数据类型执行操作时会发生TypeError。 可能是布尔值,但是找到了ing。

例如,

如果我们尝试将数字转换为大写,如下所示:

const num = 123

num.toUpperCase()

将抛出一个 TypeErro

num.toUpperCase()

^

TypeError: num.toUpperCase is not a function

因为toUpperCase函数需要字符串数据类型。 toUpperCase函数是有意通用的; 它不需要其this值为String对象。 因此,可以将其转移到其他类型的对象中用作方法。

如果我们对Objects,Boolean,Symbol,null,undefined数据类型调用toUpperCase函数,则只有字符串会转换为大写或小写形式,我们将得到TypeError,因为它操作的数据类型错误。

5. URIErro

这表明使用一种全局URI处理功能与其定义不兼容。

JS中的URI(统一资源指示符)具有以下功能:decodeURI,decodeURIComponent等。

如果我们使用错误的参数调用它们中的任何一个,我们将得到URIErro

decodeURI("%")

^

URIError: URI malformed

encodeURI,获取URI的未编码版本。 "%"不是正确的URI,因此引发了URIError。

如果对URI进行编码或解码有问题,则会引发URIError。

6.EvalErro

在使用全局eval()函数时,此函数用于识别错误。

根据EcmaSpec 2018版:

此规范当前未使用此异常。 保留该对象是为了与本规范的先前版本兼容。

7.InternalError 内部错误

该错误在JS引擎内部发生,特别是当它有太多数据要处理并且堆栈增长超过其关键限制时。

当JS引擎被太多的递归,太多的切换情况等淹没时,就会发生这种情况

switch(num) {

case 1:

...

break

case 2:

...

break

case 3:

...

break

case 4:

...

break

case 5:

...

break

case 6:

...

break

case 7:

...

break

... up to 1000 cases

}

太多的递归,一个简单的例子是这样的:

function foo() {

foo()

}

foo()

总结

正如我们所说,没有人能避免犯错误。 就我们键入代码而言,这是一个稳定的事件。 为了克服它,我们需要知道可以抛出的本机错误的类型。 我们在这篇文章中列出了它们,并提供了一些示例来说明它们是如何遇到的。

因此,无论何时在终端或浏览器中引发错误,您现在都可以轻松发现错误发生的位置和方式,并编写更好,更不易出错的代码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
7种你应该知道的JavaScript常见的错误
我们有一个带有两个元素的arr。接下来,我们尝试使数组包含90**99 == 2.9512665430652753e+193元素。
葡萄城控件
2020/03/19
2.9K0
你应该知道的7 个 JavaScript 原生错误类型
我们有一个数组,带有两个元素的 arr。接下来,尝试将数组扩展为包含 90**99 == 2.9512665430652753e+193 个元素。
疯狂的技术宅
2020/03/13
2.9K0
你知道 JavaScript 中的错误对象有哪些类型吗?
每当 JavaScript 中发生任何运行时错误时,都会引发Error对象。 在许多情况下,我们还可以扩展这些标准Error对象,以创建我们自己的自定义Error对象。
前端小智@大迁世界
2020/05/12
7.2K1
你知道 JavaScript 中的错误对象有哪些类型吗?
JavaScript崩溃指南:你遇到过这些异常吗?
xhr.open('GET', 'http://example.com/api/data', true);
zayyo
2023/11/01
4340
JavaScript(六):错误处理机制
1.Error()构造函数 javascript解析或执行语句时,一旦发生错误,js引擎会将其抛出! JavaScript原生提供了Error()构造函数,所有抛出的错误都是这个构造函数的实例(即对象
用户1149564
2018/01/11
1.4K0
JavaScript(六):错误处理机制
javascript错误类型
作为一个程序员,需要的不仅仅是技术,更是需要在遇到错误的时候对错误的处理能力。就前端而言,技术一直在更新,但是JavaScript中的错误也就是那么几个。掌握不同的报错信息会让你的实际开发事半功倍。
踏浪
2019/07/31
8670
JavaScript中的错误处理机制
在写代码的时候,避免不了遇到各种各样的错误,遇到错误,BUG,我们需要尽快的解决,才能不拖累工作的进度,我们一般都会百度错误如何解决,但是遇到一些针对性错误以及百度方法不管用的情况下,就需要了解错误处理机制了。
刘亦枫
2020/03/19
2.1K0
一篇文章带你了解JavaScript错误处理
执行JavaScript代码时,可能会发生意想不到的错误。错误可以是程序员编写的编码错误,由于输入错误引起的错误以及其他不可预见的事情。
前端进阶者
2021/05/17
9540
一篇文章带你了解JavaScript错误处理
你需要了解的几种 JavaScript 异常类型
无论是浏览器控制台还是 Node.js 的服务端,我们会在各种地方看到 JavaScript 异常,异常处理是编写程序必备的基础能力,在学习异常处理之前,了解 JavaScript 中的几种异常类型是非常有必要的。
ConardLi
2020/10/30
2K0
你需要了解的几种 JavaScript 异常类型
Javascript错误处理
每个前端开发都会用到浏览器调试,有了这个调试,我们可以更好的找到问题并解决问题。我们主要讲错误处理。
大熊G
2022/11/14
9050
Javascript错误处理
javaScript代码飘红报错看不懂?读完这篇文章再试试!
2、TypeError(类型错误):变量或参数不是预期类型,或调用对象不存在的属性方法。错误之前的代码会执行,之后代码不会执行。
用户1272076
2020/08/17
5.9K0
10秒钟内说出js中有哪些内置错误类型
日常开发中,我们会碰到各种各样的js报错信息。大部分情况,我们只要看到控制台有飘红,就知道代码执行有问题。但是这些错误都有哪些类型?可能没有太关注过,如果我们知道了这些错误类型出现的场景,那是不是对我们定位问题有所帮助,甚至能提高我们以后的代码质量。
zz_jesse
2021/02/05
1.2K0
关于 JavaScript 错误处理的最完整指南(上半部)
我们的开发过程中并不总是一帆风顺。特别是在某些情况下,我们可能希望停止程序或在发生不良情况时通知用户。
前端小智@大迁世界
2020/09/17
1.8K0
JavaScript报错
开发过程中难免会报错,有些报错一看就懂,有些看多了也记得。每种计算机编程语言都要它独特的一套错误处理与调试机制,每种错误都有对应的错误类型,而当错误发生时,就会抛出相应类型的错误对象。JavaScript同样如此,JavaScript定义了下列 7 种错误类型:
wade
2020/04/24
4460
try..catch 不能捕获的错误有哪些?注意事项又有哪些?
在 JS 中处理错误,我们主要使用try、catch、finally和throw关键字。
前端小智@大迁世界
2021/01/06
2.9K0
一文详聊前端异常原理
随着近年来前端监控体系建设日益完善,前端工程师对异常更加关注。业界关于 JS 异常介绍大多只谈了异常的捕获方法,对产生的原因和处理办法谈的较少。本文将详细的阐述异常原理,把笔者近 2 年在前端监控领域中与异常打交道的经验分享给大家。
coder_koala
2022/11/28
1.6K0
一文详聊前端异常原理
21错误与异常
错误,指程序中的非正常运行状态,在其它编程语言中称为“异常”或“错误”。解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描述信息。
Dreamy.TZK
2020/06/06
1.1K0
JavaScript 开发中常见错误解决小总结
身为一名前端打工人,当然是经验越多,在排查错误时会更容易。道理都懂,但仍然会在遇到问题时会不知道怎样着手。
疯狂的技术宅
2020/11/11
3.2K0
JavaScript 开发中常见错误解决小总结
javascript错误处理与调试
在程序开发中难免会遇到一些错误,在成千上万的代码中去寻找错误很明显相当于大海捞针,为此,每种计算机编程语言都要它独特的一套错误处理与调试机制。当然,JavaScript也不例外。
张哥编程
2024/12/19
1830
javascript错误处理与调试
10 种 JavaScript 最常见的错误
查看了数千个项目后,发现了 10 个最常见的 JavaScript 错误。我们会告诉你什么原因导致了这些错误,以及如何防止这些错误发生。如果你能够避免落入这些 “陷阱”,你将会成为一个更好的开发者。
小生方勤
2019/06/26
9.4K0
10 种 JavaScript 最常见的错误
相关推荐
7种你应该知道的JavaScript常见的错误
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档