2022.07.09
이전 블로그의 제목은 ‘Immutable VS mutable Value’였습니다.
생각보다 immutable value와 mutable value에 대한 내용이 방대하고 어려워서 string immutability로 제목을 변경하고 범위를 줄여서 차근차근뿌시기로..알아가 보자.
javascript 변수와 타입에서 원시 자료형과 객체 자료형이 살짝 언급되었다. string method를 실습하면서, 추가로 string의 immutability의 특징에 대해 좀 더 알아보기로 했다.
primitive data type이며, 변경 불가능한 값(immutable value)이다. 원시 자료형은 다음과 같다.
모든 원시 값은 불변하여 변형할 수 없다!
아니 변경할 수 있지 않나?
let str = '변경할수 없다!!'
str = '변경할 수 있는데??'
처음에 이렇게 생각했지만, 원시값 자체와, 원시값을 할당한 변수를 혼동하지 말자! 변수는 새로운 값을 할당할 수 있지만, 이미 생성한 원시 값은 객체, 배열, 함수와는 달리 변형할 수 없다! (메모리 관점에서)
// 1.
let str
// 2.
str = 'Hello'
// 3.
str = str + ', Yello!'
str
을 선언하면 자바스크립트 str
을 통해 접근할 수 있는 메모리 공간을 만든다. ‘Hello’
라는 문자열을 str
에 할당하면 메모리 공간에 ‘Hello’
가 저장된다. str
에 ‘, Yello!’
가 추가된 결과 값이 새 메모리 블록에 할당된다. str
은 새로 만든 메모리 공간을 가리킨다. ‘Hello’
가 담긴 공간은 Garbage Collection이 가능하다고 하다.Immutable | MDN
자바스크립트 메모리 관리 | MDN
자바스크립트 문자열 불변성
::TODO::
1. 값에 의한 호출과 참조에 의한 호출 방식 | 원시 자료형과 참조 자료형
2. 왜 불변하는 객체가 필요한거지? 공부할 때 참고 링크
3. 배열에서 값이 변하지 않는, 변하는 메서드
사실 지금 공부하는 프론트엔드 단계에서 너무 깊게 들어가는 것 같아서 곧 배울 javascript 심화 학습에서 언급되면 하나씩 꺼내서 정리해 보기로.