[JavaScript] 문자열(String)

  • 이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다.
  • 단순히 블로그만 읽는 것은 추천하지 않습니다.

[들어가기 전]

오랜만에 블로그 포스팅이다.

자바스크립트에 대해 깊게 공부해야할 필요성을 점점 느끼고 있다.

[문자열]

자바스크립트의 문자열은 엔진이 내부적으로 배열을 쓰도록 구현되었는지는 모르지만, 실제로 생김새만 비슷할 뿐 문자 배열과 같지 않다!

문자열과 배열은 겉모습이 닮았다.(유사 배열)

문자열과 배열의 가장 큰 차이점은 문자열은 불변 값, 배열은 가변 값 이다.

문자열은 불변 값이므로 문자열 메서드는 그 내용을 바로 변경하지 않고, 항상 새로운 문자열을 생성한 후 반환한다.

반면, 배열 메서드는 그 자리에서 곧바로 원소를 수정한다.

let a = "foo";
c = a.toUpperCase();
a === c; // false
a; //"foo"
c; //"FOO"

문자열을 다룰 때 유용한 대부분의 메소드는 문자열에 쓸 수 없지만, 문자열에 대해 불변 배열 메서드는 빌려 쓸 수 있다.

let a = "foo";
console.log(a.join); //undefined
let pa = Array.prototype.join.call(a,"-"); //이 코드에 대한 부분은 추후 다시 보면 이해 가능!
console.log(pa); 

반면, 배열에는 reverse()라는 가변 메서드가 있지만, 문자열은 불변 값이라 바로 변경되지 않으므로, 배열의 가변 메서드는 통하지 않고, 빌려쓰는 것 또한 안됨!

그래서, 1. 문자열을 배열로 바꾸고 , 2. 원하는 작업을 수행한 후, 3. 다시 문자열로 되돌려야한다

[결론]

문자열 자체에 어떤 작업을 빈번하게 수행하는 경우라면, 관점을 달리하여 문자열을 문자 단위로 저장하는 배열로 취급하는 것이 나을 수 있다.

문자열로 나타내야 할 때는 언제나 배열에 join(““) 메서드를 호출하면 된다.

출처

You Don’t Know JS, 카일 심슨 저, 한빛미디어

댓글남기기