ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascript スキルにおける値渡しと参照渡しについての深い理解

JavaScript_javascript スキルにおける値渡しと参照渡しについての深い理解

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

1. 値を渡す (値渡し)

変数の値はコピーされ、元の値とは関係ありません。つまり、新しい値が変更されても、元の値は変更されません。JavaScript では、基本的な型はすべて渡されます。 value.

コードをコピー コードは次のとおりです:

function testPassValue()
{
var m =1;
var n=2;
//m,n の値をコピーし、passValue
passValue(m,n);
に渡します(m); //Put は元の値です
}
function passValue(a,b)
{
a = a b; //a の値を変更します。a は単なるコピーです。元の値
alert(a);
}

出力結果:
3

1

2. 参照による。

参照自体のコピーが関数に渡されます。参照が指すオブジェクトはコピーされて渡されません (Java の場合も同様です)。オブジェクトの属性の値が変更された場合、元の参照と同じオブジェクト、つまりオブジェクトを指しているため、変更された値は元の参照

を通じてアクセスされます。

しかし、関数内で新しいオブジェクトへの参照を指すだけの場合、元のオブジェクトの値は変更されず、コピーされた参照のみが変更されます。

コードをコピー コードは次のとおりです:

function testPassValue()
{
var date = new Date(2006,02,27) );
alert(date.getDate()); //出力は 27
//日付参照自体をコピーし、それを passReference に渡します。date が指すオブジェクトはコピーされていないことに注意してください。 > passReference(date);
alert(date.getDate()); //出力は 12
//上記と同じ
changeReference(date);
alert(date.getDate() ); // 出力は 12
}
function passReference(da)
{
// da と元の参照は関数の外で同じオブジェクトを指しているため、アクセスされるものは元の参照はオブジェクトの date 属性になります。値は変更された値になります。この時点では、da 参照​​は実際には元の参照です。参照自体を再割り当てするコピーは、元の参照には影響しません。
da= new Date(2007,05,11);
//da 参照​​が新しいオブジェクトを指すようにします。この時点では、元の参照は依然として元のオブジェクトを指します。
alter(da.getDate()) // 出力は 11
}


3 特殊文字列



JavaScript では String も参照渡しされます。js には charAt メソッドしかありませんが、Java の String と同じであり、不変性があります。 🎜>
コードをコピーします


コードは次のとおりです:

var s1 = "hello";
var s2 = "hell" "o" ;

if (s1 == s2) alert("s1 = s2"); //この文は実行されますか? Java に詳しい人は実行されないと思うかもしれません (私はかなり批判的です) Java の == は値が等しいかどうかを比較するため、この文は実行されます。ただし、他の Object == 比較では、Identity は java. と同じです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。