これは、筆記試験の問題を考えた結果です。通常、関数内のパラメーター値を変更する人はいません。ここで説明するのは 3 つの方法です。
1、関数宣言時に仮パラメータを直接変更します
function f1(a) {
alter(a);
a = 1;//仮パラメータ a
alter(1 === a) を変更します);
alter (1 === argument[0]);
}
f1(10);
関数 f1 は、パラメーター 10 を渡します。 、最初に 10 をポップアップし、a を変更すると 1、true は 2 回ポップアップし、a と argument[0] は両方とも 1 になります。
2、関数内の引数オブジェクトを通じて
function f2(a) {
alter(a);
argument[0] = 1;//引数を変更します
alter(1 === a) );
alert(1 === argument[0]);
}
関数 f1 と同じです。
3. 関数内で宣言されたローカル変数は仮パラメータと同じ名前です
function f3(a) {
alert(a);
var a = 1;//ローカル変数 a を宣言し、値を代入します。 of 1
alter(1 === a);
alter(arguments[0]);
}
f3(10);
関数 f3 は、仮パラメータ a を指定し、関数内でローカル変数 a を宣言します。代入は 1 ですが、ここでの a はパラメータ a のままです。これは、最後に表示される argument[0] が 1 に変更されるという事実によって証明できます。 。
4. 値を割り当てずにローカル変数 a を宣言するだけの場合は状況が異なります
function f3(a) {
var a;//宣言のみ、代入なし
alter(a); argument[0 ]);
}
f3(10);
この時点で表示されるのは未定義ではなく 10 です。