范围错误:重复次数必须小于无穷大

String.prototype.repeat() 方法与无穷大的 count 参数一起使用时,会发生 JavaScript 异常 "重复次数必须小于无穷大"。

¥The JavaScript exception "repeat count must be less than infinity" occurs when the String.prototype.repeat() method is used with a count argument that is infinity.

信息

¥Message

RangeError: Invalid string length (V8-based)
RangeError: Invalid count value: Infinity (V8-based)
RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox)
RangeError: Out of memory (Safari)
RangeError: String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity (Safari)

错误类型

¥Error type

RangeError

什么地方出了错?

¥What went wrong?

已使用 String.prototype.repeat() 方法。它有一个 count 参数,指示重复字符串的次数。它必须介于 0 和小于正 Infinity 之间,并且不能是负数。允许值的范围可以这样描述:[0, +∞).

¥The String.prototype.repeat() method has been used. It has a count parameter indicating the number of times to repeat the string. It must be between 0 and less than positive Infinity and cannot be a negative number. The range of allowed values can be described like this: [0, +∞).

生成的字符串也不能大于最大字符串大小,这在 JavaScript 引擎中可能有所不同。在 Firefox (SpiderMonkey) 中,最大字符串大小为 230 - 2(~2GiB)。

¥The resulting string can also not be larger than the maximum string size, which can differ in JavaScript engines. In Firefox (SpiderMonkey) the maximum string size is 230 - 2 (~2GiB).

示例

¥Examples

无效案例

¥Invalid cases

js
"abc".repeat(Infinity); // RangeError
"a".repeat(2 ** 30); // RangeError

有效案例

¥Valid cases

js
"abc".repeat(0); // ''
"abc".repeat(1); // 'abc'
"abc".repeat(2); // 'abcabc'
"abc".repeat(3.5); // 'abcabcabc' (count will be converted to integer)

也可以看看