(1)SyntaxError

SyntaxError是解析代码时发生的语法错误

// 变量名错误

var 1a;

// 缺少括号

console.log 'hello');

(2)ReferenceError

ReferenceError是引用一个不存在的变量时发生的错误。

unknownVariable

// ReferenceError: unknownVariable is not defined

另一种触发场景是,将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。

console.log() = 1

// ReferenceError: Invalid left-hand side in assignment

this = 1

// ReferenceError: Invalid left-hand side in assignment

上面代码对函数console.log的运行结果和this赋值,结果都引发了ReferenceError错误

(3)RangeError

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

new Array(-1)

// RangeError: Invalid array length

(1234).toExponential(21)

// RangeError: toExponential() argument must be between 0 and 20

(4)TypeError

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

new 123

//TypeError: number is not a func

var obj = {}; obj.unknownMethod()

// TypeError: undefined is not a function

上面代码的第二种情况,调用对象不存在的方法,会抛出TypeError错误。

(5)URIError

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

decodeURI('%2')

// URIError: URI malformed

(6)EvalError

eval函数没有被正确执行时,会抛出EvalError错误。该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容,才继续保留。

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

new Error("出错了!");
new RangeError("出错了,变量超出有效范围!");
new TypeError("出错了,变量类型无效!");

上面代码表示新建错误对象的实例,实质就是手动抛出错误。可以看到,错误对象的构造函数接受一个参数,代表错误提示信息(message)。

最新文章

  1. jquery-validation-1.13.1 自定义验证正则
  2. Hive0.11安装配置学习笔记
  3. Mysql中的各种timeout
  4. sdp内容解析
  5. UEditor 之查询当前编辑区域的状态是源码模式还是可视化模式
  6. Java Dns Cache Manipulator
  7. 使用CSS禁止textarea调整大小功能的方法
  8. iOS开发--动画篇之layout动画深入
  9. 2013-2014集训之DP
  10. Spring4.0支持Groovy配置
  11. 视频主观质量评价工具:MSU Perceptual Video Quality tool
  12. 顶层const和底层const
  13. 【Debian 8.8】Java 8 安装以及环境变量配置
  14. 携程实时计算平台架构与实践丨DataPipeline
  15. MySQL5.7开多实例指导
  16. 【原创】大叔问题定位分享(15)spark写parquet数据报错ParquetEncodingException: empty fields are illegal, the field should be ommited completely instead
  17. css中position 定位的兼容性,以及定位的使用及层级的应用
  18. mongodb mac
  19. New task CodeForces - 788E (线段树优化dp)
  20. intel32指令中文版

热门文章

  1. Java中的静态变量、静态方法问题
  2. vmware--查看链接克隆依赖关系
  3. .NET JSON 转换 Error ” Self referencing loop detected for type“
  4. JDK源码解析之Java SPI机制
  5. SQL Server 基本UPDATE和DELETE语句
  6. 使用js从element的matrix推导transform的scale、rotate 和 translate参数
  7. python之类与类之间的关系
  8. CoreCRM 开发实录 —— 基于 AntDesign 的新 UI
  9. getRealPath函数编译报错问题
  10. Windows下 webpack4.0 的安装