이는 작성된 테스트 문제에 대한 생각에서 비롯됩니다. 일반적으로 누구도 함수 내부의 매개변수 값을 수정하지 않습니다. 여기서는 세 가지 수정 방법에 대해서만 설명합니다.
1. 함수 선언 시 형식 매개변수를 직접 수정합니다.
다음과 같이 코드 코드를 복사합니다.
함수 f1(a) {
경고(a);
a = 1;//형식 매개변수 a 수정
경고(1 === a);
경고(1 === 인수[0]);
}
f1(10);
함수 f1은 매개변수 a를 정의합니다. 호출 시 매개변수 10이 전달되고, 10이 먼저 팝되고, a가 1로 수정되고, true가 두 번 팝업되고, a와 인수[0]이 모두 1입니다.
2. 함수 내부의 인수 객체를 통해 수정
다음과 같이 코드 코드를 복사합니다.
함수 f2(a) {
경고(a);
인수[0] = 1; //인수 수정
경고(1 === a);
경고(1 === 인수[0]);
}
효과는 함수 f1과 동일합니다.
3. 함수 내부에 선언된 지역 변수는 형식 매개변수와 동일한 이름을 갖습니다.
다음과 같이 코드 코드를 복사합니다.
함수 f3(a) {
경고(a);
var a = 1;//지역 변수 a를 선언하고 값 1을 할당합니다.
경고(1 === a);
경고(인수[0]);
}
f3(10);
함수 f3은 형식 매개변수 a를 정의하고, 지역 변수 a는 함수 내부에서 선언되어 값 1이 할당되지만, 여기서 a는 여전히 매개변수 a이며, 이는 마지막에 나타나는 인수[0]로 증명할 수 있습니다. 1로 수정됩니다.
4. 값을 할당하지 않고 지역변수 a만 선언하면 상황이 달라집니다.
다음과 같이 코드 코드를 복사합니다.
함수 f3(a) {
var a;//선언만 있고 할당은 없습니다.
경고(a);
경고(인수[0]);
}
f3(10);
이때 팝업은 모두 10개이며, 정의되지 않은 상태는 아닙니다.