Javascript #04 - 참조

inxnxng·2021년 8월 6일
0

Javascript 기본

목록 보기
4/9

참조

복제, 참조 - 데이터형에 따른 차이

var a = {'id' : 'apple'};
var b = a;
b.id = 'banana';

console.log(a.id);

즉, 복제가 되지 않고 참조가 되고 있는 것

  1. a = 1; : 데이터형이 숫자
  2. a = {'id':1}; : 데이터형이 객체

숫자는 원시 데이터형이고 객체는 참조 데이터형이다.

기본(원시) 데이터형은 복제되지만 참조 데이터형은 참조된다.
모든 객체는 참조 데이터형이다.

함수

1) 원시 데이터 타입을 인자로 넘겼을 때

var a = 1;
function func(b){
  b = 2;
  return b;
}

func(a);
console.log(a);	// 1
  1. a = 1
  2. b = a -> b = 1' : 복제가 일어남
  3. b = 2 -> b = 2, a = 1

2) 참조 데이터 타입을 인자로 넘겼을 때

var a = {'id':1};
function func(b){
  b = {'id':2}; // 객체를 새로 선언한 것
}

func(a);
console.log(a.id);	// 1
  1. a = {id : 1} : 객체를 닮고 있음
  2. b(linked with a) = a -> b(unlinked with a) = {id : 2} : b는 새로운 객체를 만든 것
  3. a = {id : 1}, b = {id : 2}

3) 파라미터를 객체의 레퍼런스로 넘겼을 때

var a = {'id':1};
function func(b){
  b.id = 2;	// 입력인자로 받은 b의 일부를 건드린 것 == 레퍼런스로 넘긴 것
}

func(a);
console.log(a.id);  // 2

0개의 댓글