1. 基本データ型のパラメータを渡します:
function addTen(num ){
num =10;
return num;
var result=addTen(count);/ /30
実行結果は 20 と 30 です。このコードでは、変数 count が関数 addTen にパラメーターとして渡されます。これは、変数 count の値を関数 addTen のパラメーターにコピーすることと同じです。このとき、addTenのパラメータnumは関数内の変数とみなすことができます。上記のコードでは、2 つの基本データ型変数間の値をコピーすることと同等です。基本データ型は独自の独立したメモリ アドレスを持っているため、関数の実行後、num と count の値は同じになるだけです。関数の外の結果は直接代入されるため、result の値は関数 30 の結果になります。
2. 参照型でパラメータを渡す:
コードをコピー
}
var person=new Object()
alert(person.name); );// LSN
実行結果は次のようになります: LSN。このコードでは、関数 setName が obj オブジェクトに属性名を追加し、属性「LSN」を割り当てています。obj は参照型であるため、obj には参照型 person が割り当てられています。つまり、person と obj は参照していると言われます。したがって、新しい属性名が obj に追加されると、関数の外側の人も変更され、person.naem の最終結果は LSN になります。
3. 参照型パラメータに渡されるのは値ですか?
コードをコピーします
obj.name="BCD"; }
var person=new Object();
setName(person);
alert(person.name);// ABC
実行結果は ABC です。例 3 と例 2 の違いは、obj オブジェクトに新しい属性名を追加して値を割り当てた後、obj が新しいオブジェクト (new Object()) として定義されることです。新しいオブジェクトが定義され、名前に新しい値「BCD」が割り当てられます。この時点で参照渡しされる場合、最終的な person オブジェクトは、name 属性が「BCD」である新しいオブジェクトを指すように自動的に変更されますが、最終的な表示は「ABC」になります。これは、パラメータが関数値内で変更されますが、元の参照は変更されません。実際、関数内で obj=new Object() とすると、新しい obj は関数内のローカル オブジェクトになり、このオブジェクトは関数の実行後に自動的に破棄されます。