reference type vs primitive type

백승용·2020년 10월 8일

primitive type

JavaScript의 primitive(value) type의 DataType은 Boolean, null, undefined, String, Number가 있다.

  • 값을 복사한다.
  • 값을 복하는 것을 call by value(pass by value)라고 부른다.
//primitive type 복사
let x = 10;
let y = 'abc';


let a = x;
let b = y;

console.log((x, y, a, b); // 결과 10, 'abc', 10, 'abc'
            
a = 5;
b = 'def';

console.log(x, y, a, b); // 결과 10, 'abc', 5, 'def'

// 값에 의한 복사이기 때문에 x와 a, y와 b는 초기값은 같은 값을 가지지만 각각의 변수들의 값을 변경하면 서로 영향이 없다.

reference type

reference type의 DataType은 Array,Function,Objcet가 있다.
- 컴퓨터 메모리의 주소값을 가진다.
- 주소값을 참조하는 것을 call by reference(pass by reference)라고 부른다.
- 주소값을 가지기 때문에 안에 있는 데이터는 가지고 있지 않는다.

let arr = [];
arr.push('abc');
VariablesValuesAddressObjects
첫번째 줄arr<#001>#001[]
두번째 줄arr<#001>#001['abc']


객체를 할당

let obj = { start : 0 };
newObj = obj 
VariablesValuesAddressObjects
첫번째 줄obj<#001>#001{ start : 0 }
두번째 줄newObj<#001>

객체 재할당

let obj = { start : 0 };
obj = { end : 10 }
VariablesValuesAddressObjects
첫번째 줄obj<#001>#001{ start : 0 }
두번째 줄obj<#121>#121{ end : 10 }

0개의 댓글