详解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 相关文章推荐
jQuery.each()用法分享
Jul 31 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
跟我学习javascript的call(),apply(),bind()与回调
Nov 16 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
深入理解JavaScript中的预解析
Jan 04 Javascript
快速掌握jQuery插件开发
Jan 19 Javascript
简单实现bootstrap选项卡效果
Feb 08 Javascript
分享一道关于闭包、bind和this的面试题
Feb 20 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
Vue图片裁剪组件实例代码
Jul 02 Vue.js
解决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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
php INI配置文件的解析实现分析
2011/01/04 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
js传值 判断
2006/10/26 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
通过示例彻底搞懂js闭包
2017/08/10 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
学校运动会开幕演讲稿
2014/01/04 职场文书
教学改革实施方案
2014/03/31 职场文书
安全生产承诺书范文
2014/05/22 职场文书
保姆聘用合同
2015/09/21 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
浅谈Redis的几个过期策略
2021/05/27 Redis
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers