JavaScript では、次のように、渡されたパラメータを関数内で変更できます
関数 func1(名前) {
名前 = 'ユリ';
アラート(名前);
}
func1('ジャック');//出力lily
別の例を見てください
function fun1( n) {
this.name = n;
}
function fun2(name) {
fun1.call(this,'lily'); >alert(name);
}
fun2("jack");//出力 "jack"
fun1 関数は fun2 を "lily" に呼び出すときにパラメーターを変更しようとしました、しかし失敗しました。出てくるのはやはり「ジャック」です。理由を考えてみてください。
実際、fun1 には fun2 を呼び出すときに、呼び出し元属性
function fun1() {
argument.callee.caller.arguments[0] = 'lily';
}
function fun2(name) {
fun1.call(this,name);
alert(name);
}
fun2("jack");//出力 "lily"
可視、外側レイヤー 関数は内部関数の呼び出しスタックに表示され、変更可能です。