[JS] 참조 타입

daybyday·2020년 12월 20일
0

Javascript

목록 보기
3/15

참조 타입

자바스크립트에서는 기본 타입인 숫자, 문자열, 불린값, null, undefined 5가지를 제외한 모든 값은 객체다. 배열이나 함수도 또한 객체이다. 이러한 객체를 참조 타입이라고 부른다.

객체의 연산은 모두 실제 값이 아닌 참조 값으로 처리되기 때문에 '참조 타입'이다.

var objA = {
	val: 40;
};
var objB= objA;

console.log(objA.val); // 40
console.log(objB.val); // 40

objB.val = 50;
console.log(objA.val); // 50
console.log(objB.val); // 50

objA와 objB 모두 동일한 객체를 가리키는 '참조값'을 가지고 있으므로, objB.val와 objA.val은 같게 된다.

동등 연산자(==)를 이용한 객체 비교

동등 연산자(==)를 사용하여 두 객체를 비교할 때도 객체의 프로퍼티 값이 아닌 참조값을 비교한다는 것에 주의해야 한다.

var objA = { value: 100 }
var objB = { value: 100 }
var objC = objB;

console.log(objA == objB); // false
console.log(objB == objC); // true

objA와 objB는 같은 객체를 참조하고 있지 않으므로 프로퍼티 값이 같더라도 false가 나온다.
objB와 objC는 같은 객체를 참조하고 있으므로 true가 나온다.

call by value vs call by reference

  • call by value (값에 의한 호출)
    - 기본 타입
    • 함수 프로퍼티로 값을 넘길 경우 복사된 값이 전달됨
    • 함수 내부에서 값을 변경해도 실제로 호출된 변수의 값이 변경되지 않음.
  • call by reference (참조에 의한 호출)
    - 참조 타입
    • 객체의 참조값이 그대로 함수 내부로 전달됨
    • 함수 내부에서 값을 변경하면 그대로 실제 객체의 값에 반영됨

0개의 댓글