Call By Value
값에 의한 호출
함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성됩니다.
이때, 전달되는 변수 값을 복사해서 함수 인자로 전달합니다.
즉, 변수가 가진 값을 변경해도 원본 값은 변경되지 않습니다.
function addOne(x) {
x += 1;
return x;
}
let num = 5;
console.log(addOne(num)); // 6
console.log(num); // 5
Call By Reference
참조에 의한 호출
함수가 호출될 때, 인자로 전달되는 변수의 레퍼런스를 전달합니다.
따라서 인자 값이 변경되면 객체의 값도 변경됩니다.
이유는 인자로 전달된 값이 변수의 주소이므로, 함수 내에서 변수 값을 변경하면 주소에 저장된 값이 변경되기 때문입니다.
function addOne(arr) {
arr.push(1);
return arr;
}
let nums = [1, 2, 3];
let result = addOne(nums);
console.log(result); // 출력: [1, 2, 3, 1]
console.log(nums); // 출력: [1, 2, 3, 1] (원본 값도 함께 변경됨)
'기술 스텍 > Java' 카테고리의 다른 글
Object 클래스란? (0) | 2024.02.07 |
---|---|
직렬화란? (0) | 2024.02.03 |
JVM 내부 구조 정리 (1) | 2024.01.14 |
String과 String Builder, String Buffer 차이점 (1) | 2024.01.11 |
고유 락이란? -Java (0) | 2024.01.08 |