! 궁금증을 가지게 된 점
개발을 하다보면 많은부분에서 레코드를 캡슐화하여 get함수같은 값으로 내장되어 있던 변수를 반환하는데, 그렇다면 js에서의 string 의 길이도 이와같이 변수가 초기화 될때마다 길이의 값을 내장했다가 '문자열'.length 실행시 get 함수처럼 반환하는걸가? 궁금증을 가지게 됨
우선 js에서 어떻게 string의 길이를 반환하는지 찾아보니
JavaScript는 길이를 반환하지 않고 문자열이 차지하는 코드 단위를 반환합니다. UTF-16 문자열 형식 지정 방법을 사용하여 문자를 저장합니다. 이것은 본질적으로 문자열의 문자가 저장되기 전에 16비트 길이의 이진수로 인코딩됨을 의미합니다.
따라서 .length 속성이 포함될 때마다 JavaScript는 문자열이 차지하는 코드 단위 수를 조회하고 반환합니다. 이것이 이모지 등과 같은 특정 문자에 의해 길이 속성이 호출될 때 JavaScript가 2를 반환하는 이유입니다. 이러한 문자는 2개의 코드 단위를 차지하기 때문입니다.
때문에 일반적인 문자가 아닌 이모지의 길이를 재보면 이모지당 2가 나오게 된다
console.log('😀'.length);
// 2
결론
여기저기 찾아본 결과 캡슐화 되어있다는 내용은 안나오고 length를 실행할때마다 계산하고 있는듯 하다
'잡다한 개발 지식' 카테고리의 다른 글
window.location과 window.document.location의 차이 (0) | 2022.11.03 |
---|