• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Unicode 관련 정리

21.04.28 19:41 작성 조회수 109

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() 형태로 작성하면 값을 구분할 수 없습니다.