reference, primitive data type

6818 단어 TILjsTIL

🔎 Primitive data type

자바스크립트의 자료형 (문자, 숫자, array, object 등)은 크게 Primitive & reference 두가지 타입으로 분류된다. Primitive data type자료 자체가 변수에 저장되는 자료이다. 문자, 숫자 자료형들이 대표적인 primitive data type이다.

🔎 Reference data type

reference data type은 자료를 변수에 직접 저장하는게 아닌,
자료가 저장된 위치를 알려주는 레퍼런스를 변수에 저장한다.
Array, Object 자료형은 reference data type에 속한다.

⭐️ reference data type의 특징

1. 등호로 복제시 값 공유가 일어난다.

//prmitive 자료형
var name1 = '김';
var name2 = name1;
name1 = '박'

console.log(name1); // '박' 출력
console.log(name2); // '김' 출력

Primitive 자료형은 위의 예제처럼 변수2에 변수1를 대입 후, 변수1의 값을 변경하면 변수1의 값만 변경되고 이미 복사된 변수2의 값은 변경되지 않는다.

//reference 자료형
var name1 = { name : 'kim' };
var name2 = name1;
name1.name = 'park';

console.log(name1); // { name : park } 출력
console.log(name2); // { name : park } 출력


Reference 타입 자료형은 해당값이 저장된 위치(reference)가 저장되어 있기 때문에 등호로 변수를 복제할 경우, 같은 값을 가르키고 있으므로 값 공유가 일어난다.

2. 각 변수에 할당된 값이 같은 경우

var name1 = { name : 'kim' };
var name2 = { name : 'kim' };

console.log(name1 === name2) //false


reference 타입 자료형은 변수에 할당된 값이 같더라도 각각의 reference가 다르므로, 자료형 비교시 false가 출력된다.

3. 함수를 이용해 값을 변경하는 경우

var name1 = { name : '김' };

function test(obj){
  obj = { name : 'park' }; //오브젝트를 재할당 해주는 함수
}

test(name1); // 기존 값 '김' 출력

값을 재할당 해주는 함수를 만들어 함수를 실행시켜주면, 재할당된 값이 출력되지 않고 기존값이 그대로 출력된다. 파라미터 문법은 일종의 변수를 만드는 문법이고, 거기에 '새로운 레퍼런스를 생성해주겠습니다.'다는 의미이기 때문이다.

// 예 - 자바스크립트의 시점
var name1 = { name : '김' };

function test(obj){
  var obj = { name : 'park' }; //변수 obj의 새로운 reference 생성
}

test(var obj = name1); // obj = name1 이기때문에 name1과 값공유

좋은 웹페이지 즐겨찾기