모자딥 11장 원시 값과 객체의 비교

릿·2023년 1월 9일
0

11. 원시 값과 객체의 비교

11.1 원시 값


11.1.1 변경 불가능한 값

불변성 : 원시값은 변경 불가능한 값이기 때문에 값을 직접 변경할 수 없다. 변수 값을 변경하기 위해 원시 값을 재할당 하면 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후 변수가 참조하던 메모리 공간의 주소를 변경한다.

11.1.2 문자열과 불변성

자바스크립트의 문자열은 원시 타입이며 변경 불가능하다. 문자열은 유사 배열 객체이면서 이터러블이므로 배열과 유사하게 각 문자에 접근할 수 있다.

var str = 'string';

// 문자열은 유사 배열이므로 인덱스를 사용해 문자에 접근할 수 있다.
console.log(str[0]); // s

// 원시 값인 문자열이 객체처럼 동작한다.
console.log(str.length); // 6
console.log(str.toUpperCase()); // STRING

11.1.3 값에 의한 전달

변수에 원시 값을 갖는 변수를 할당하면 변수에는 할당되는 변수의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달이라고 한다.

var score = 80;

var copy = score;

console.log(score, copy); // 80 80
console.log(score === copy); // true

이때 score변수와 copy변수는 숫자 값 80을 갖는다는 점에서는 동일하지만 score변수와 copy변수의 값 80은 다른 메모리 공간에 저장된 별개의 값이다.

11.2 객체


11.2.1 변경 가능한 값

객체를 생성하고 관리하는 방식은 매우 복잡하며 비용이 많이 든다. 메모리를 효율적으로 사용하기 위해서 객체는 변경가능한 값으로 설계되어 있다. 단점으로는 여러개의 식별자가 하나의 객체를 공유할 수 있다는 것이다.

11.2.2 참조에 의한 전달

var person = {
  name: 'Lee'
}
  
// 참조 값을 복사 (얕은 복사)
var copy = person;

객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달되는데 이를 참조에 의한 전달이라 한다.

profile
항상 재밌는 뭔가를 찾고 있는 프론트엔드 개발자

0개의 댓글