javascipt 可能会抛出异常的方法统计

此文档来自对 mdn Errors参考页面 的整理。
总得来说使用下面这些需要小心谨慎
构造相关
Array ArrayBuffer Date Function RegExp
方法调用相关
String
String.fromCodePoint()
String.prototype.repeat()
Date.parse()
Number
Number.prototype.toExponential()
Number.prototype.toPrecision()
Number.prototype.toString()
JSON
JSON.parse()
JSON.stringify()
Object.create()
Symbol.keyFor()
instanceof
URI
decodeURI()
encodeURI()
Function
Function.prototype.call()
Function.prototype.apply()

特殊场景下的错误

RangeError

用来计数的参数小于正 Infinity且不能为负数。该值的合法范围可以这样表示: [0, +∞)。
其结果字符串也不能长于最大字符串,不同 JavaScript 引擎中可能有所不同。 在 Firefox (SpiderMonkey) 里最大字符串大小为 228 -1 (0xFFFFFFF)。

ReferenceError

当你使用变量的时候,这个变量必须是已经被声明的,或者你可以确保它在你当前的脚本或作用域 (scope) 中可用。
词法变量在初始化之前被访问。该错误可以发生于任何语句块中,当使用 let 或 const 修饰的变量在初始化之前被访问的时候。
仅在严格模式下出现的 ReferenceError 警告。JavaScript 的执行将不会停止。
strict mode 中,Function.callerFunction.arguments 属性是不该使用的。它们都是已经被废弃的了,因为这两者泄露了函数的调用者,是不标准的,难于优化和有这潜在的性能问题。
脚本尝试去访问一个不存在的对象属性。property accessors页面描述了两种访问属性的方法。
引用未定义属性的错误仅出现在 strict mode 代码中。在非严格代码中,对不存在的属性的访问将被忽略

SyntaxError

十进制字面量可以以零作为开始(0),后面跟着其他十进制数,但是假如前导 0 之后的所有数字都小于 8,那么这个数就会被解析为一个八进制的数。因为 08 和 09 不是这样的,所以 JavaScript 会发出警告

相关文档

mdn Errors参考页面