通常、関数内のパラメーター値を変更する人は誰もいません。ここで説明するのは 3 つの方法です。
1. 関数宣言時に仮引数を直接変更する
次のようにコードをコピーします。
関数 f1(a) {
アラート(a);
a = 1;//仮パラメータaを変更する
アラート(1 === a);
アラート(1 === 引数[0]);
}
f1(10);
関数 f1 はパラメーター a を定義します。呼び出し時に、パラメーター 10 が渡され、最初に 10 がポップアウトされ、a が 1 に変更され、true が 2 回ポップアップされ、a と argument[0] は両方とも 1 になります。
2. 関数内の引数オブジェクトを通じて変更します。
次のようにコードをコピーします。
関数 f2(a) {
アラート(a);
argument[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 です。これは、最後に表示される argument[0] という事実によって証明できます。 1に修正されます。
4. 値を割り当てずにローカル変数 a を宣言するだけの場合は、状況が異なります。
次のようにコードをコピーします。
関数 f3(a) {
var a;//宣言のみ、代入なし
アラート(a);
アラート(引数[0]);
}
f3(10);
現時点では、ポップアップはすべて 10 であり、未定義ではありません。