整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

你应该知道的七种 JavaScript 错误类型

你应该知道的七种 JavaScript 错误类型

者:CUGGZ

在使用 JavaScript 时,我们可能会遇到各种各样的错误,那你知道 JavaScript 常见的错误类型有哪些吗?下面就来看看 JavaScript 中常见的错误类型。

1. SyntaxError

SyntaxError 表示语法错误。当错误的使用已经预定义的语法时会抛出此错误。

2. TypeError

TypeError 表示类型错误。当值不是预期数据类型、调用无效方法时都会抛出此错误。

3. ReferenceError

ReferenceError 表示引用错误。当找不到变量的引用、在变量作用域范围之外使用变量、使用未声明的变量时、在暂时性死区期间使用变量时都会抛出此错误。

4. RangeError

RangeError 表示范围错误。将变量设置在其限定的范围之外、将值传递给超出范围的方法、调用一个不会结束的递归函数时就会抛出此错误。

5. URIError

URIError 表示 URI 错误。当 URI 的编码和解码出现问题时,会抛出 URIError。JavaScript 中的 URI 操作函数包括:decodeURI、decodeURIComponent 等。如果使用了错误的参数(无效字符),就会抛出 URIError。

6. EvalError

EvalError 表示 Eval 错误。当 eval() 函数调用发生错误时,会抛出 EvalError。不过,当前的 JavaScript 引擎或 ECMAScript 规范不再抛出此错误。但是,为了向后兼容,它仍然是存在的。

7. InternalError

InternalError 表示内部错误。当 JavaScript 引擎上的工作负载突然激增时,会抛出此错误。当有太多数据需要处理时,工作量就会激增,比如函数调用包含过多的递归或者过多的switch case时。

注意: 现代 JavaScript 中不会抛出 EvalError 和 InternalError 错误。

来源: 前端充电宝

东IT优就业

javascript中常见错误类型有哪些?跟着广州IT培训老师来看一看。

js中控制台报错主分两大类:

第一类:语法错误,这一类错误在javascript预解析的过程中如果遇到,则会导致整个js文件都无法执行。

另一类:统称为异常,这一类的错误会导致在错误出现的那一行之后的代码无法执行,但注意,在那一行之前的代码是不会受到影响的。

注意:以下的6种错误中,都可以按照3个参数来查找错误;

第一个参数message:表示错误提示信息,第二个fileName文件名,第三个lineNumber行号。

1. SyntaxError(语法错误):

2. Uncaught ReferenceError(引用错误):

引用一个不存在的变量时发生的错误。将一个值分配给无法分配的对象,比如对函数的运行结果或者函数赋值

3. RangeError(范围错误):

RangeError是当一个只超出有效范围时发生的错误。主要的有几种情况,第一是数组长度为负数,第二是Number对象的方法参数超出范围,以及函数堆栈超过最大值。

4. TypeError(类型错误):

变量或参数不是预期类型时发生的错误。

比如使用new字符串、布尔值等原始类型和调用对象不存在的方法就会抛出这种错误,因为new命令的参数应该是一个构造函数。

5. URIError(URL错误):

URI相关参数不正确时抛出的错误,

主要涉及encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()六个函数。

6. EvalError eval()(函数执行错误):

注意:是在ES5以下的Js中,当eval()函数没有被正确执行时,才会抛出的错误;ES5以上没有

希望广州IT培训老师上述分享的内容对大家有所帮助,有其他IT常见问题欢迎提出交流。

广东IT优就业

出处:www.cnblogs.com/xuanranit/p/8399030.html

更多IT精彩推荐:

月入过万的WEB工程师是如何炼成的?http://www.ujiuye.com/zt/webqianduan/?

够快速地错误定位,解决问题,是我们开发中非常重要的一种能力。

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

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

1. RangeError 范围错误

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

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

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

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

2. ReferenceError 引用错误

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

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

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

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

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

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

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

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

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

3. SyntaxError 语法错误

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

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

  • tokenization 标记化
  • parsing 解析
  • interpreting 编译

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

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

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

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

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

4. TypeError 类型错误

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

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

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

将抛出一个 TypeError

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

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

5. URIError

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

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

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

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

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

6. EvalError

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

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

7. InternalError 内部错误

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

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

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

总结

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

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

文/H5技术专家:云和数据阿宽老师

想学习前端,请关注并私信:h5学习,赠送您学习大礼包!