ホームページ  >  記事  >  ウェブフロントエンド  >  ゼロから学ぶJs(基本データ型と参照型のパラメータ受け渡しの詳細解析)_基礎知識

ゼロから学ぶJs(基本データ型と参照型のパラメータ受け渡しの詳細解析)_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:56:071037ブラウズ

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. 参照型でパラメータを渡す:



コードをコピー
コードは次のとおりです: 関数 setName (obj){ obj.name="LSN";
}
var person=new Object()
alert(person.name); );// LSN


実行結果は次のようになります: LSN。このコードでは、関数 setName が obj オブジェクトに属性名を追加し、属性「LSN」を割り当てています。obj は参照型であるため、obj には参照型 person が割り当てられています。つまり、person と obj は参照していると言われます。したがって、新しい属性名が obj に追加されると、関数の外側の人も変更され、person.naem の最終結果は LSN になります。
3. 参照型パラメータに渡されるのは値ですか?



コードをコピーします
コードは次のとおりです。 function setName(obj){ obj.name="ABC"; obj=new Object();
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 は関数内のローカル オブジェクトになり、このオブジェクトは関数の実行後に自動的に破棄されます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。