RangeError: repeat count must be less than infinity
当 String.prototype.repeat() 方法的 count 参数为无穷大时,会发生 JavaScript 异常“重复计数必须小于无穷大”。
消息
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)
错误类型
RangeError
哪里出错了?
已使用 String.prototype.repeat() 方法。它有一个 count 参数,指示字符串重复的次数。它必须介于 0 到正 Infinity 之间(不包括无穷大),并且不能是负数。允许值的范围可以这样描述:[0, +∞)。
结果字符串也不能大于最大字符串大小,这在 JavaScript 引擎中可能有所不同。在 Firefox (SpiderMonkey) 中,最大字符串大小为 230 - 2(约 2GiB)。
示例
无效案例
js
"abc".repeat(Infinity); // RangeError
"a".repeat(2 ** 30); // RangeError
有效情况
js
"abc".repeat(0); // ''
"abc".repeat(1); // 'abc'
"abc".repeat(2); // 'abcabc'
"abc".repeat(3.5); // 'abcabcabc' (count will be converted to integer)