11.1 원시 값
원시 타입의 값은 변경이 불가능 한 값이다. 즉 식별자에 값을 변경하더라고 기존에 값이 변경되는 것이 아닌 새롭게 메모리를 할당해 값을 만들어낸다.
11.1.2 문자열과 불변성
문자열은 유사 배열 객체 이면서 이터러블이므로 배열과 유사하게 각 문자에 접근 할수 있다.
const str = 'string';
str[0] // s
str[0] = 'S' // 값을 변경 할 수는 없다.
console.log(str) // string
JavaScript
복사
11.1.3 값에 의한 전달
변수에 변수를 전달 했을 때 변수에 할당되는 변수의 원시 값이 복사되어 전달되는데 이를 값에 의한 전달 이라고 한다. 단, 다른 변수의 원시 값이 복사되어 전달되기 때문에 별개의 공간에 저장되고, 원본 변수의 값이 변경되어도 전달된 변수의 값은 변경되지 않는다.
정확히는 값이아닌 메모리 주소를 전달 받아 이를 접근해 값을 참조해 한쪽에서 새로운 공간을 만드는 것이다.
11.2 객체
11.2.1 변경 가능한 값
객체 타입의 값은 애초에 변경이 가능핟. 즉 참조값에 접근해 이를 변경할 수 있다.
11.2.2 참조에 의한 전달
객체를 가르키는 변수를 다른 변수에 할당 할 시 참조 값이 복사되어 전달됩니다. 이는 복사된 객체를 변경하면 기존 객체도 변경됩니다.
const a = { a: '1' }
const b = a;
b.a = '2';
console.log(a.a) // 2
JavaScript
복사