javascript伝達パラメータ値伝達VS引用伝達

1638 ワード

選手の自己紹介:値伝達:多針は基本的なタイプにとって、外部定義変数であり、関数に伝達した後、関数内部でパラメータを変更したら、外部定義変数そのものの値に影響しません.
 
参照転送:オブジェクトに対して、外部で定義されたオブジェクトを関数に渡すと、関数の内部でオブジェクトを変更すると、外部で定義されたオブジェクトに影響を与えます.
 
値転送vs  引用リレー開始
値の転送例
function addNum(num){
 num += 20;
 return num;
}

var testVar = 20;
var reTestVar = addNum(testVar);
alert(testVar);//20
alert(reTestVar);//40

 伝達されたtestVarはaddNum関数内でパラメータに20を加えたが、testVar自体の値は変わっていないことを見た.
 
引用伝達例
function changeObj(obj){
 obj.color ="red"; 
}

var flower = new Object();
flower.color = "blue";
changeObj(flower);
alert(flower.color);//red

 伝達されたflowerはchangeObj関数内でオブジェクトに対してカラー属性を設定していますが、外部flower自身のカラー属性値も確かに変更されました.
 
 
はい、審判は二人の襟が乱れて引き分けとなりました.
などの値が伝えられたら、引用伝達に問題があります.
まず証拠を提出します
function changeObj(obj){
 obj.color ="red"; 
 obj = new Object();
 obj.color = "yellow";
}

var flower = new Object();
flower.color = "blue";
changeObj(flower);
alert(flower.color);//red

 どうしてalert(flower.co lor)はyellowowではなくredなのですか?
 
ちょっと待ってください.専門家席は、引用伝達によって、伝達されたflowerオブジェクトの最終値が新たな対象に与えられました.色彩属性値はyellowです.結果はredです.だから、javascriptではこの概念が間違っています.なぜ値がredに変化するのかというと、objとflowerは同じオブジェクトを参照しているので、言い換えれば、このオブジェクトが値で伝達されても、objは参照されたメモリアドレスに従って同じオブジェクトを修正しているので、引用伝達が与えられた例は説明できないでしょうか?
 
宣言:値伝達vs引用伝達  ,値リレーで勝利しました
古来より成者王敗者の寇:javascriptの中には値伝達だけがあり、引用伝達はありません.