详解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代码
Dec 18 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
Jun 10 Javascript
原生JavaScript实现瀑布流布局
Jun 28 Javascript
微信开发 消息推送实现代码
Oct 21 Javascript
canvas学习之API整理笔记(二)
Dec 29 Javascript
JavaScript函数表达式详解及实例
May 05 Javascript
js每隔两秒输出数组中的一项(实例)
May 28 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
优雅的在React项目中使用Redux的方法
Nov 10 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 Javascript
React精髓!一篇全概括小结(急速)
May 23 Javascript
Nuxt 项目性能优化调研分析
Nov 07 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
基于python的字节编译详解
2017/09/20 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python增加图像对比度的方法
2019/07/12 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
python实现坦克大战
2020/04/24 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
中专三年学习的个人自我评价
2013/12/12 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
体育运动会广播稿
2014/10/05 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
学生会部长竞选稿
2015/11/19 职场文书