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. と同じです。