详解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代码超级推荐
Apr 05 Javascript
javascript 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
JS简单实现多级Select联动菜单效果代码
Sep 06 Javascript
深入浅析JavaScript的API设计原则
Jun 14 Javascript
javascript 常用验证函数总结
Jun 28 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
Sep 09 Javascript
Vue异步组件使用详解
Apr 08 Javascript
浅谈Angular4实现热加载开发旅程
Sep 08 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
vue动态绑定class的几种常用方式小结
May 21 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 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数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
nginx 设置多个站跨域
2021/03/09 Servers
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
Python 模板引擎的注入问题分析
2017/01/01 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
np.random.seed() 的使用详解
2020/01/14 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
解决python运行效率不高的问题
2020/07/20 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
会计系毕业生求职信
2014/05/28 职场文书
大学毕业生推荐信
2014/07/09 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers