Errors--JavaScript错误

Error: Permission denied to access property “x”

错误类型:Error
原因:尝试访问无权访问的对象。这很可能出现在使用<iframe>元素加载了一个不同域名下的页面,这在访问子页面时会违背同源策略(same-origin policy)。
栗子:

<iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"></iframe>
<script>
console.log(document.getElementById('myframe').contentWindow.document);
// Error: Permission denied to access property "document"
</script>

InternalError: too much recursion

错误类型:InternalError(内部错误)
原因:一个调用自身的函数被称作递归函数Recursive functions)。一些情况下,递归函数类似于一个循环,都重复地执行一个代码段许多次,都需要一个条件(用于避免无尽循环或此处的无尽递归)。当出现过于深层的递归或无尽递归时,JavaScript将会抛出此错误。

RangeError: argument is not a valid code point

错误信息:

RangeError: {0} is not a valid code point (Firefox)
RangeError: Invalid code point {0} (Chrome)

错误类型:RangeError
原因:String.fromCodePoint()
方法只接收合法码点值。码点是Unicode编码的值,从0 到 0x10FFFF。用NAN,负整数,非整数或者大于0x10FFFF的值这个函数会报错。

RangeError: invalid array length

错误信息:

RangeError: invalid array length (Firefox)
RangeError: Invalid array length (Chrome)
RangeError: Invalid array buffer length (Chrome)

错误类型:RangeError
原因:
无效的数组长度错误通常会在以下情形中出现:

  • 当创建一个长度为负数或者长度大于等于2^32的 Array
    或者 ArrayBuffer
    时。
  • 当设置 Array.length 属性为负数或者长度大于等于2^32时。
    为什么 Array(数组) 和 ArrayBuffer(数组缓冲区) 的长度会受到限制?
    因为 Array 和 ArrayBuffer 的 length(长度) 属性被定义为一个32位无符号整形(unsigned 32-bit integer)的值,所以它只能存储 0 – 2^32-1 之间的数。

RangeError: precision is out of range

错误信息:

RangeError: precision {0} out of range (Firefox)
RangeError: toExponential() argument must be between 0 and 20 (Chrome)
RangeError: toFixed() digits argument must be between 0 and 20 (Chrome)
RangeError: toPrecision() argument must be between 1 and 21 (Chrome)

原因:
下面任意函数的参数超出精度范围:

RangeError: radix must be an integer

错误信息:

RangeError: radix must be an integer at least 2 and no greater than 36 (Firefox)
RangeError: toString() radix argument must be between 2 and 36 (Chrome)

错误类型:RangeError
原因: Number.prototype.toString()
方法的参数基数必须是2~36之间的整数。
为什么不能大于36?
因为基数大于10时按字母数字字符的字母顺序排列,26个字符最大为36。

RangeError: repeat count must be less than infinity

错误信息:

RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox)
RangeError: Invalid count value (Chrome)

错误类型:RangeError
原因: String.prototype.repeat()
的参数用来表示重复次数,参数范围是[0, +∞),火狐最大值为2^28-1。

RangeError: repeat count must be non-negative

错误信息:

RangeError: repeat count must be non-negative (Firefox)
RangeError: Invalid count value (Chrome)

错误类型:RangeError
原因:String.prototype.repeat()
的参数用来表示重复次数,参数范围是[0, +∞)。

ReferenceError: “x” is not defined

错误类型:引用错误
原因:在某些地方引用一个不存的的变量的时候。当你使用变量的时候,这个变量必须是已经被声明的,或者你可以确保它在你当前的脚本或作用域 (scope) 中可用。

ReferenceError: assignment to undeclared variable “x”

错误信息:

ReferenceError: assignment to undeclared variable "x" (Firefox)
ReferenceError: "x" is not defined (Chrome)
ReferenceError: Variable undefined in strict mode (Edge)

错误类型:ReferenceError
warning in strict mode only.

    原文作者:岸芷汀兰cj
    原文地址: https://www.jianshu.com/p/46ed5f94a13c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞