목차
원시 타입과 객체타입의 차이
원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다.
이에 비해 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값이다.
원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제값이 저장된다.
이에 비해 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이 저장된다.
원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달이라 한다.
이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 이를 참조에 의한 전달이라 한다.
원시 타입의 값, 변경 불가능한 값 → 원시 값 자체를 변경 불가능하다는 뜻. 변수값은 변경가능함
한번 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없음 → 데이터의 신뢰성 보장됨
상수는 변수와 달리 한번 값을 저장하면 변경할 수 없음
원시 값은 변경 불가능한 값이기 때문에 값을 할당하면 메모리도 다시 할당됨
불변성 : 변수 값을 변경하기 위해 원시값을 재할당하면 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경함
불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없음
자바스크립트는 원시타입인 문자열타입을 제공함. 자바스크립트의 문자열은 원시타입이고, 변경불가능함
→ 문자열이 생성된 이후에는 변경할 수 없음을 의미함
var str = 'Hello';
str = 'world';
문자열은 유사배열 객체이면서 이터러블이므로 배열과 유사하게 각 문자에 접근가능함