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.