인프런 커뮤니티 질문&답변

simoniful님의 프로필 이미지
simoniful

작성한 질문수

모던 자바스크립트(ES6+) 기본

2. Unicode 함수: fromCodePoint(), codePointAt(), [정리 시간], normalize()

Unicode 관련 정리

작성

·

164

2

String.fromCodePoint(50)와 "123".codePointAt(1)의 형태가 다른데 그 이유는 무엇일까요?

String.fromCodePoint( )은 직접 호출하는 함수의 형태로 다수의 파라미터를 작성합니다. 

codePointAt( ) String.prototype.codePointAt() 호출, prototype을 사용한 메소드 형태로 파라미터에 인덱스 하나만 작성합니다.

[1, 2, 3]으로 작성하면 타입에러가 발생하면서 이는 동작하지 않습니다. 

codePointAt()은 값을 구하는 대상이 있지만, fromCodePoint()은 대상이 없습니다.

---

+ 이는 유니코드와 문자열을 서로 인코딩과 디코딩을 하기위한 목적으로 설계되었다고 생각하였습니다.  

+ fromCodePoint()은 String 빌트인에서 직접 호출하여 사용하는 함수 형태입니다. 이는 파라미터에 작성한 유니코드 값을 문자열로 변환하는 것에 초점이 맞추어져 있으며, 즉 디코딩의 목적으로 사용하라는 의미 같습니다.  

+ codePointAt()은 생성한 String 오브젝트에 대하여 프로토 타입에 내장된 메소드를 사용하는 형태입니다. 생성한 오브젝트에 초점이 맞추어져 있으며, 즉 인코딩의 목적으로 사용하라는 의미 같습니다. 

답변 1

4

김영보님의 프로필 이미지
김영보
지식공유자

String.fromCodePoint( )은 직접 호출하는 함수의 형태로 다수의 파라미터를 작성합니다.

==> 즉, String.fromCodePoint(50, 60, 70) 형태로 작성할 수 있습니다.
한편 [50, 60, 70].fromCodePoint() 형태로 작성하면, 빌트인 String 오브젝트가 아니라 빌트인 Array 오브젝트에 fromCodePoint()가 있어야 하는데, 이것은 문자열 처리 시맨틱이 Array 처리 시맨틱으로 바뀌게 됩니다.
이를 방지하기 위해 "506070".fromCodePoint() 형태로 작성하면 값을 구분할 수 없습니다.

simoniful님의 프로필 이미지
simoniful

작성한 질문수

질문하기