자바스크립트 문자열 타입에 대해서...




이전 포스트 내용 중 문자열 타입에 관해 얘기 했던 적이 있습니다. 포스트 내용에 핵심은 문자열 타입이 "값"과 "참조" 중
어디에 속하는지에 대한 얘기였으며, 이번 포스트에서 그에 관한 얘기를 더 나눠보도록 하겠습니다.


우선 자바스크립트 문자열은 가변적인 길이를 가지고 있습니다, 이 말은 고정되어 있지 않다는 말이며, 그 때문에 고정된
메모리를 가진 변수에는 직접 저장할 수 없다는 말이며(값 타입처럼), 대신, 변수에 저장되는 것은 이런 값에 대한 "참조 값"입니다.


그렇다면, 문자열은 "참조타입"이라는 걸까요?





아래 예제를 통해 더 자세히 알아보도록 하겠습니다.


  1. // 참조타입의 기본 예
  2.  
  3. // r 배열객체는 참조타입이므로 r1 배열객체와 같은 값을 참조하며, r 배열객체와 r1 배열객체는 같습니다.
  4. var r = [];
  5. r[0] = 'hello';
  6.  
  7. var r1 = r;
  8. r1[1] = 'world';
  9.  
  10. alert(r === r1); // true
  11.  
  12. // 문자열이 값타입이라는 예
  13.  
  14. // v 문자열 객체는 값타입이므로 새로 생성된 문자열 객체 v1과 다릅니다.
  15. var v = 'hello';
  16. var v1 = v + 'world';
  17.  
  18. alert(v === v1); // false


위 결과에서 말하는 바와같이 자바스크립트 문자열은 내부적으로 참조타입의 효율성을 갖도록 구현된 기본타입입니다.

즉, 기본타입이면서 참조타입이 가지고 있는 효율성만 갖도록 구현되었다는 말입니다.