본문 바로가기

언어/Js

[Js] 매개변수 재할당을 지양하는 이유

function test(value){ // value 매개변수
	value = 10; // 매개변수 재할당
    return value;
}
test(20); // 인수 전달

1. 인수와 파라미터가 달라 의도와 다른 동작이 발생한다.

function sum(num1, num2){
	num2 = 30;
    return num1 + num2;
}

sum(10, 20); // 40

2. 파라미터 변경을 인지하지 못한다.

function test(newArray){
	console.log(preArray == newArray); // true
  	newArray[1] = 30;
    console.log(preArray == newArray); // true
    
}

const preArray = [10, 20];
test(preArray); // 인수 전달

파라미터 값을 변경해도 인수와 파라미터는 동일한 배열로 인식된다.

배열에서 인덱스로 값을 변경하면 배열의 주소값은 바뀌지 않는다.

따라서 인수와 파리미터의 값은 다르지만, 주소값이 같아 동일한 배열로 인식된다.