関数への引数の『値渡し』と『参照渡し』
関数へ引数を渡す時に、値を渡す『値渡し』と参照を渡す『参照渡し』があります。
VBは、関数側の引数の型指定で『値渡し』か『参照渡し』かが決まります。
C言語は、仕様的に『値渡し』のみで、『参照渡し』にしたいときは、ポインターを値渡しにします。
Perlは、仕様的に『参照渡し』のみで、『値渡し』風にするには、参照の中身をワークに移して処理します。
では、JavaScriptは、どうなっているのでしょうか?
JavaScriptは、変数の型によって『値渡し』か『参照渡し』かが決まります。
基本型(数値、論理値、文字列)は『値渡し』で、オブジェクト型は『参照渡し』になります。
// 文字列型の場合(基本型) var xxx = "ABC"; // 値が代入される if (xxx == "ABC") { // 値で比較される alert(xxx); // ABCと表示 yyy(xxx); // 値渡し alert(xxx); // ABCと表示 } function yyy (xxx) { // 値渡し xxx = "XYZ"; } // オブジェクト型(配列)の場合 var aaa = ["ABC"]; // 参照が代入される var ccc = aaa; if (aaa == ccc) { // 参照で比較される alert(aaa[0]); // ABCと表示 bbb(aaa); // 参照渡し alert(aaa[0]); // XYZと表示 } function bbb (aaa) { // 参照渡し aaa[0] = "XYZ"; }