JavaScript ES6 문법 - Primitive/Reference Data types

박재휘·2024년 2월 25일

JavaScript

목록 보기
6/19
post-thumbnail

자바스크립트의 자료형은 크게 2가지로 분류한다. Primitive / Reference

1. Primitive data type

변수와 값이 그대로 저장된다.

Primitive data type을 가진 자료형

  • String
  • number

2. Reference data type

변수에 reference가 저장된다.

Reference가 저장된다는 말은 이 데이터가 어느쪽에 있다는 주소가 저장된다는 말이다.

Reference data type을 가진 자료형

  • Array
  • Object

3. 차이점

Primitive data type 복사

var a = "Kim";
var b = a;
console.log(a); // Kim
console.log(b); // Kim

a = "Park";
console.log(a); // Park
console.log(b); // Kim

결과

변수 aKim을 넣고 b에 복사했을 때 ab모두 Kim이 들어갔다.
변수 aPark으로 바꿨을 때 a만 바뀌고 b는 그대로인것을 확인할 수 있다.

Reference data type 복사

var a = { name: "Kim" };
var b = a;
console.log(a); // Kim
console.log(b); // Kim

a.name = "Park";
console.log(a); // Park
console.log(b); // Park

결과

변수 a에 오브젝트 {name: "Kim"}을 넣고 b에 복사했을 때 ab모두 {name: "Kim"}이 들어갔다.
변수 a.namePark으로 바꿨지만 ab 모두 바뀐 것을 확인할 수 있다.

a에는 {name: "Kim"}가 어디에 있다는 주소가 저장되어 있기 때문에 b로 복사할 때 동일한 주소가 복사된 것이다. 두 변수는 같은 주소를 공유하기 때문에 그 주소가 가리키고 있는 값이 변경되면 주소를 공유하고 있던 다른 변수에서도 값이 변경된다.

== 연산자로 비교

var name1 = "Kim";
var name2 = "Kim";
console.log(name1 == name2); // true

Primitive data type은 같은 문자열 Kim==로 비교하면 true가 나온다.

var name3 = { name: "Park" };
var name4 = { name: "Park" };
console.log(name3 == name4); // false
console.log(name3.name == name4.name); //true

Reference data type은 같아 보이는 오브젝트 { name: "Park" }==로 비교하면 false가 나온다. 보기엔 똑같이 생겼지만 각각 다른 레퍼런스를 저장하고 있기 때문에 false가 나오는 것이다.

  • 값을 비교하고 싶다면 name3.name == name4.name 처럼 오브젝트의 키 값에 접근하여 비교하자.
profile
차곡차곡 열심히

0개의 댓글