详解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 相关文章推荐
prettify 代码高亮着色器google出品
Dec 28 Javascript
Javascript排序算法之计数排序的实例
Apr 05 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
Jan 27 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 Javascript
Vue常用的全选/反选的示例代码
Feb 19 Javascript
Vue实现input宽度随文字长度自适应操作
Jul 29 Javascript
Node.JS如何实现JWT原理
Sep 18 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
第十一节 重载 [11]
2006/10/09 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
JS获取整个页面文档的实现代码
2011/12/15 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
详解 javascript对象创建模式
2020/10/30 Javascript
六个窍门助你提高Python运行效率
2015/06/09 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
Python如何发布程序的详细教程
2018/10/09 Python
python多任务之协程的使用详解
2019/08/26 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
财务学生的职业生涯发展
2014/02/11 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
给校长的一封检讨书
2014/09/20 职场文书
受伤赔偿协议书
2014/09/24 职场文书
面试复试通知单
2015/04/24 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技