변수에 대해 공부를 하다가 call by reference라는 용어를 접하게 되었다.
우선적으로 call by~~가 무엇이냐..
'평가전략(Evaluation Strategy)'중의 하나이며 위키피디아에서 정의하기를
프로그래밍 언어에서 함수 호출의 아규먼트(argument)의 순서를 언제 결정하고 함수에 어떤 종류의 값을 통과시킬지 결정하는 것
이라 말하고 있다.
즉 함수에 인수로 뭘 던지느냐에 따라서 함수가 어떻게 실행될지에 대한 방법?을 결정하는 것이라고 보면 된다.
여기서 잠깐,
인자와 인수의 차이에 대해서 잠시 알아보자
var a = 1;
var func = function(b) { // parameter, formal parameter, 매개변수, 인자
...
};
func(a); // arguments, actual parameter, 인수
인자(Parameter) = 매개변수 = 가인수(Dummy argument)
인수(Argument) = 전달인자
var a = 1;
var func = function(b) { // callee
b = b + 1;
}
func(a); // caller
console.log(a); // 1
var a = {};
var func = function(b) { // callee
b.a = 1;
}
func(a); // caller
console.log(a.a); // 1