๋ฉ์์ง
RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox) (repeat count๋ infinity๋ณด๋ค ์์์ผํ๋ฉฐ, ์ต๋ ๋ฌธ์์ด ํฌ๊ธฐ๋ฅผ ๋๊ธธ ์ ์์ต๋๋ค.) RangeError: Invalid count value (Chrome)
์๋ฌ ํ์
๋ฌด์์ด ์๋ชป๋์์๊น?
String.prototype.repeat() ๋ฉ์๋๊ฐ ์ฌ์ฉ๋์์ต๋๋ค. ์ด ๋ฉ์๋๋ ๋ฌธ์์ด์ ๋ฐ๋ณตํ๋ ์๋ฅผ ์์ธกํ๋ ์นด์ดํธ ํ๋ผ๋ฉํฐ๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋ผ๋ฉํฐ๋ 0๋ณด๋ค ์ปค์ผํ๋ฉฐ, ์์ Infinity ๋ณด๋ค ์์์ผ ํ์ผ๋ฉฐ, ์์๋ ํ์ฉ๋์ง ์์์ต๋๋ค. ์ด ๊ฐ์ ํ์ฉ ๋ฒ์๋ ์ด๋ ๊ฒ ํํ๋ ์ ์์ต๋๋ค. : [0, +โ).
๊ฒฐ๊ณผ์ธ ๋ฌธ์์ด์ ์ต๋ ๋ฌธ์์ด ํฌ๊ธฐ๋ณด๋ค ํด ์ ์์ง๋ง, JavaScript ์์๋ ๋ค๋ฅผ ์ ์์ต๋๋ค. Firefox (SpiderMonkey) ์์์ ์ต๋ ๋ฌธ์์ด ํฌ๊ธฐ๋ 228 -1 (0xFFFFFFF)์
๋๋ค.
์
ํ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ
'abc'.repeat(Infinity); // RangeError
'a'.repeat(2**28); // RangeError
ํ์ฉ๋๋ ๊ฒฝ์ฐ
'abc'.repeat(0); // ''
'abc'.repeat(1); // 'abc'
'abc'.repeat(2); // 'abcabc'
'abc'.repeat(3.5); // 'abcabcabc' (์ซ์๋ ์ ์๋ก ๋ณํ๋ ๊ฒ์
๋๋ค.)