원시 값은 변경 불가능한 값이다. 여기서 주의할 점은 변경 불가하다는 것이 변수가 아니라 값이라는 점이다. 즉, 원시 값 자체를 변경할 수 없을 뿐 변수 값은 언제든지 재할당을 통해 변경할 수 있다.
let str = 'string';
console.log(str[0]); // s
console.log(str.length); // 6
str[0] = 'S';
console.log(str); // string
let score = 80;
let copy = score;
console.log(score, copy); // 80 80
console.log(score === copy); // true
score = 100;
console.log(score, copy); // 100 80
console.log(score === copy); // false
객체는 변경 가능한 값이다. 프로퍼티의 개수가 정해져 있지 않으며, 동적으로 추가되고 삭제할 수 있다.
let person = {
name: 'Lee'
};
let copy = person;
console.log(person === copy); // true
copy.name = 'Kim';
person.address = 'Seoul';
console.log(person); // {name: "Kim", address: "Seoul"}
console.log(copy); // {name: "Kim", address: "Seoul"}
let person1 = {
name: 'Lee'
};
let person2 = {
name: 'Lee'
};
console.log(person1 === person2); // false
console.log(person1.name === person2.name); // true
🧐 해당 글은 책
모던 자바스크립트 deep dive
를 참고하여 작성하였습니다.