<aside> 💡 원시 타입의 값 : 변경 불가능한 값 객체(참조) 타입의 값 : 변경 가능한 값
값에 의한 전달 (pass by value): 원본의 원시 값이 복사 되어 전달
참조에 의한 전달 (pass by reference): 참조 값이 복사되어 전달
</aside>
<aside> 💡 변경 불가능한 값
</aside>
원시 값은 어떤 일이 있어도 불변
재할당시에 변수 값을 변경하지 않고, 새로운 메모리 공간을 확보한 후 참조하던 메모리 공간의 주소를 변경함
불변성
을 띔문자열은 동적으로 메모리 공간을 할당한다.
문자열은 유사 배열 객체이면서 이터러블이므로 배열과 유사하게 문자에 접근할 수 있다.
var str = 'string';
// 유사 배열이므로 배열과 유사하게 인덱스로 접근할 수 있다.
console.log(str[0]); // s
// 원시 값인 문자열이 객체처럼 동작한다.
console.log(str.length); // 6
console.log(str.toUpperCase()); // STRING
// 유사 배열이므로 배열과 유사하게 동작하지만, 원시 값이므로 변경할 수 없다.
// 하지만 에러는 나지 않는다.
str[0] = 'S';
console.log(str); // string
원시 값을 가지는 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달된다.
이를 값에 의한 전달
이라고 한다.
var score = 80;
// copy 변수에는 score 변수의 값 80이 복사되어 할당된다.
var copy = score;
console.log(score, copy); // 80 80
console.log(score === copy); // true
score와 copy의 값은 80으로 같으나, 다른 메모리 공간
에 저장된다.
다른 메모리 공간에 저장이 되기 때문에, 어느 한 값을 변경하더라도 다른 한 값에 영향을 주지 않는다.