详解JavaScript中的六种错误类型


Posted in Javascript onSeptember 21, 2017

刚入前端坑,英语又不太好的同学,是不是还在为控制台的错误抓耳挠腮?今天就带大家看一看JavaScript中常见的错误类型。

js中的控制台的报错信息主要分为两大类,第一类是语法错误,这一类错误在预解析的过程中如果遇到,就会导致整个js文件都无法执行。另一类错误统称为异常,这一类的错误会导致在错误出现的那一行之后的代码无法执行,但在那一行之前的代码不会受到影响。

1. SyntaxError:语法错误

// 1. Syntax Error: 语法错误
// 1.1 变量名不符合规范
var 1       // Uncaught SyntaxError: Unexpected number
var 1a       // Uncaught SyntaxError: Invalid or unexpected token
// 1.2 给关键字赋值
function = 5     // Uncaught SyntaxError: Unexpected token =

2. Uncaught ReferenceError:引用错误

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

// 2.1 引用了不存在的变量
a()       // Uncaught ReferenceError: a is not defined
console.log(b)     // Uncaught ReferenceError: b is not defined
// 2.2 给一个无法被赋值的对象赋值
console.log("abc") = 1   // Uncaught ReferenceError: Invalid left-hand side in assignment

3. RangeError:范围错误

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

// 3.1 数组长度为负数
[].length = -5      // Uncaught RangeError: Invalid array length
// 3.2 Number对象的方法参数超出范围
var num = new Number(12.34)
console.log(num.toFixed(-1))   // Uncaught RangeError: toFixed() digits argument must be between 0 and 20 at Number.toFixed
// 说明: toFixed方法的作用是将数字四舍五入为指定小数位数的数字,参数是小数点后的位数,范围为0-20.

4. TypeError类型错误

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

// 4.1 调用不存在的方法
123()        // Uncaught TypeError: 123 is not a function
var o = {}
o.run()        // Uncaught TypeError: o.run is not a function
// 4.2 new关键字后接基本类型
var p = new 456      // Uncaught TypeError: 456 is not a constructor

5. URIError,URL错误

主要是相关函数的参数不正确。

decodeURI("%")     // Uncaught URIError: URI malformed at decodeURI

URI相关参数不正确时抛出的错误,主要涉及encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()六个函数。

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

在ES5以下的JavaScript中,当eval()函数没有被正确执行时,会抛出evalError错误。

例如下面的情况:

var myEval = eval;
myEval("alert('call eval')");

需要注意的是:ES5以上的JavaScript中已经不再抛出该错误,但依然可以通过new关键字来自定义该类型的错误提示。

以上的6种派生错误,连同原始的Error对象,都是构造函数。开发者可以使用它们,认为生成错误对象的实例。

new Error([message[,fileName[,lineNumber]]]),

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

总结

以上所述是小编给大家介绍的JavaScript中的六种错误类型,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS实现时间格式化的方式汇总
Oct 16 Javascript
浅析Cookie中的Path与domain
Dec 18 Javascript
js无刷新操作table的行和列
Mar 27 Javascript
Jquery操作js数组及对象示例代码
May 11 Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 Javascript
JavaScript 事件入门知识
Apr 13 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
vue项目引入字体.ttf的方法
Sep 28 Javascript
使用Node.js实现一个多人游戏服务器引擎
Mar 13 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
JavaScript实现随机点名程序
Mar 25 Javascript
解决Vue编译时写在style中的路径问题
Sep 21 #Javascript
使用JS实现图片轮播的实例(前后首尾相接)
Sep 21 #Javascript
Node调用Java的示例代码
Sep 20 #Javascript
浅谈react前后端同构渲染
Sep 20 #Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
Sep 20 #Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 #Javascript
微信小程序 数据绑定及运算的简单实例
Sep 20 #Javascript
You might like
php 在文件指定行插入数据的代码
2010/05/08 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
yii上传文件或图片实例
2014/04/01 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
javascript 实现map集合
2015/04/03 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
python如何实现int函数的方法示例
2018/02/19 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
2014年护士个人工作总结
2014/11/11 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
Go语言怎么使用变长参数函数
2022/07/15 Golang