자바스크립트
자바스크립트와 call by
devjones
2021. 11. 29. 00:01
기본적으로, 자바스크립트의 데이터타입에는 2가지가 있다.
기본 데이터타입(숫자, 문자열, 불린값, null, undefined)
참조 데이터타입(객체, 배열)
왜 참조타입이냐, 그것의 모든 연산이 실제 값이 아닌 참조값으로 처리되기 때문이다.
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
다음으로,
함수 호출의 방식이 기본타입과 참조타입이 다르게 동작하는데
기본타입 : 값에 의한 호출. call by value.
함수를 호출할 때 인자로 기본타입의 값을 넘길 경우 호출된 함수의 매개변수로 '복사된 값'이 전달
참조타입 : 참조에 의한 호출. call by reference
함수를 호출할 때 인자로 참조타입인 객체를 전달할 때 객체의 참조값이 그대로 전달된다.
다음의 예제가 그차이를 잘 보여준다.
var a = 100;
var objA = {
value : 100
};
function changeArg(num, obj) {
num = 200;
obj.value = 200;
console.log('num :', num); // 200
console.log('obj :', obj); // {value:200}
}
changeArg(a, objA);
console.log('a :', a); // 100
console.log('objA :', objA); // {value:200}