String.fromCodePoint()

String.fromCodePoint() 정적 메서드는 명시된 코드 포인트의 시퀀스로부터 생성된 문자열을 반환합니다.

시도해보기

구문

js
String.fromCodePoint()
String.fromCodePoint(num1)
String.fromCodePoint(num1, num2)
String.fromCodePoint(num1, num2, /* …, */ numN)

매개변수

num1, …, numN

유니코드의 코드 포인트를 표현하는 0부터 0x10FFFF 이하의 정수.

반환 값

명시된 코드 포인트의 시퀀스를 사용하여 생성된 문자열

예외

RangeError

numN이 정수가 아니거나 0보다 작거나 혹은 숫자로 변환된 후 0x10FFFF보다 크면 발생합니다.

설명

fromCodePoint()String의 정적 메서드이기 때문에, 항상 사용자가 만든 String 값의 메서드가 아닌 String.fromCodePoint()로 사용합니다.

유니코드 코드 포인트의 범위는 0에서 1114111(0x10FFFF)까지입니다. UTF-16에서 각 문자열 인덱스는 0 - 65535 값을 갖는 코드 단위입니다. 더 높은 코드 포인트는 16비트 서로게이트 의사 문자의 쌍으로 표현됩니다. 따라서 fromCodePoint()는 전달된 인수 수보다 length(UTF-16 코드 단위)가 더 큰 문자열을 반환할 수 있습니다. 유니코드에 대한 자세한 내용은 UTF-16 문자, 유니코드 코드 포인트 및 문자소 클러스터를 참조하세요.

예제

fromCodePoint() 사용하기

아래는 유효한 입력입니다.

js
String.fromCodePoint(42); // "*"
String.fromCodePoint(65, 90); // "AZ"
String.fromCodePoint(0x404); // "\u0404" === "Є"
String.fromCodePoint(0x2f804); // "\uD87E\uDC04"
String.fromCodePoint(194564); // "\uD87E\uDC04"
String.fromCodePoint(0x1d306, 0x61, 0x1d307); // "\uD834\uDF06a\uD834\uDF07"

아래는 유효하지 않은 입력입니다.

js
String.fromCodePoint("_"); // RangeError
String.fromCodePoint(Infinity); // RangeError
String.fromCodePoint(-1); // RangeError
String.fromCodePoint(3.14); // RangeError
String.fromCodePoint(3e-2); // RangeError
String.fromCodePoint(NaN); // RangeError

fromCharCode()와의 비교

String.fromCharCode()는 코드 포인트를 지정하여 보조 문자(예: 코드 포인트 0x010000 - 0x10FFFF)를 반환할 수 없습니다. 대신 보조 문자를 반환하려면 UTF-16 서로게이트 쌍이 필요합니다.

js
String.fromCharCode(0xd83c, 0xdf03); // Code Point U+1F303 "Night with
String.fromCharCode(55356, 57091); // Stars" === "\uD83C\uDF03"

반면 String.fromCodePoint()는 코드 포인트(UTF-32 코드 단위와 동일)를 지정하여 4바이트 보조 문자뿐만 아니라 보다 일반적인 2바이트 BMP 문자도 반환할 수 있습니다.

js
String.fromCodePoint(0x1f303); // or 127747 in decimal

명세서

Specification
ECMAScript Language Specification
# sec-string.fromcodepoint

브라우저 호환성

BCD tables only load in the browser

같이 보기