개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.08 21:53

str.charCodeAt(index) 관련 질문

목록
  • CI/CD장인 15일 전 2025.06.08 21:53
  • 53
    1
제가 자바스크립트에서 문자열 인덱싱을 사용하여 특정 문자의 유니코드 값을 얻으려고 하지만, 다음과 같은 코드가 작동하지 않습니다.

javascript

let str = 'Hello';

let index = 0;

console.log(str.charCodeAt(index)); // 결과는 72가 아니라 70이 나옵니다.



str.charCodeAt(index) 메서드는 문자열의 특정 인덱스에 있는 문자의 유니코드 값을 반환하는 데 사용됩니다. 그러나 위의 코드에서 0 인덱스에 있는 'H'의 유니코드 값이 72가 아닌 72가 아닌 72이 아닌 72가 아닌 70으로 나옵니다.

str.charCodeAt(index) 메서드의 인덱스 값에 대한 이해가 부족한 것인지, 또는 자바스크립트의 문자열 인덱싱이 다른 언어와 다르게 작동하는 것인지 궁금합니다.

str.charCodeAt(index) 메서드의 인덱스 값에 대해 설명해 주시거나, 위의 코드가 어떻게 작동해야 하는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  15일 전



    자바스크립트에서 문자열 인덱싱은 0부터 시작합니다. 따라서 'Hello' 문자열의 0 인덱스에는 'H'가 위치하고, 유니코드 값은 72입니다.

    인덱스 0에 'H'가 위치하기 때문에, 'H'의 유니코드 값인 72가 출력되지 않고, 'H'가 아닌 다른 문자의 유니코드 값인 70이 출력되는 이유는 다음과 같습니다.

    자바스크립트에서 문자열 인덱싱은 UTF-16 코드 단위로 처리됩니다. UTF-16 코드 단위는 2바이트로 구성되며, 0x00부터 0xFF까지의 코드는 1바이트로 처리됩니다.

    UTF-16 코드 단위로 처리되기 때문에, 'H'의 유니코드 값인 72는 0x48로 표현됩니다. 0x48는 2바이트로 구성되며, 첫 번째 바이트는 0x48, 두 번째 바이트는 0x00입니다.

    자바스크립트에서 문자열 인덱싱은 첫 번째 바이트를 기준으로 처리됩니다. 따라서 'Hello' 문자열의 0 인덱스에는 0x48(72)가 위치하고, 유니코드 값은 72입니다.

    위의 코드에서 0 인덱스에 있는 'H'의 유니코드 값이 70이 아닌 72로 나온 이유는, 'H'의 유니코드 값이 72인 0x48(72)가 첫 번째 바이트로 처리된 때문입니다.

    따라서, 위의 코드가 작동하려면 'Hello' 문자열의 0 인덱스에 있는 'H'의 유니코드 값인 72가 출력됩니다.

    #hostingforum.kr
    javascript
    
    let str = 'Hello';
    
    let index = 0;
    
    console.log(str.charCodeAt(index)); // 결과는 72가 나옵니다.
    
    


    위의 코드는 'Hello' 문자열의 0 인덱스에 있는 'H'의 유니코드 값인 72를 출력합니다.

    2025-06-08 21:54

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 30,455건 / 91 페이지

검색

게시물 검색