Javascript에서는 전달된 매개변수를 다음과 같이 함수 내에서 수정할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
함수 func1(이름) {
이름 = '백합';
경고(이름);
}
func1('jack');//릴리 출력
또 다른 예를 살펴보겠습니다
다음과 같이 코드 코드를 복사합니다.
함수 fun1(n) {
this.name = n;
}
함수 fun2(이름) {
fun1.call(this,'lily');
경고(이름);
}
fun2("jack");//"jack" 출력
fun1 함수는 fun2를 "lily"로 호출할 때 매개변수를 변경하려고 했지만 실패했습니다. 팝업되는 것은 여전히 "잭"입니다. 왜 그런지 생각해 보세요.
실제로 fun1에는 caller 속성을 사용하여 fun2를 호출할 때 매개변수를 수정할 수 있는 기능이 여전히 있습니다.
다음과 같이 코드 코드를 복사합니다.
함수 fun1() {
args.callee.caller.arguments[0] = '백합';
}
함수 fun2(이름) {
fun1.call(this,이름);
경고(이름);
}
fun2("jack");//"백합" 출력
내부 함수의 호출 스택이 외부 함수에 표시되고 수정될 수 있음을 알 수 있습니다.