pass-by-value - 値渡し 参照渡し C言語 - JavaScriptは参照渡し型の言語ですか、それとも値渡し型の言語ですか?

C# 参照渡し / javascript / pass-by-reference

プリミティブな型(数値、文字列など)は値渡しですが、オブジェクトは値渡し(オブジェクトを保持している変数が実際にはオブジェクトへの参照であると考える場合)と参照渡し(オブジェクトへの変数がオブジェクトそのものを保持していると考える場合)の両方が可能であるため、不明です。

Peter Mortensen



Answer #1

値渡し(プリミティブ型)

var a = 3;
var b = a;

console.log(a); // a = 3
console.log(b); // b = 3

a=4;
console.log(a); // a = 4
console.log(b); // b = 3

参照渡し(オブジェクト)

var c = { "name" : "john" };
var d = c;

console.log(c); // { "name" : "john" }
console.log(d); // { "name" : "john" }

c.name = "doe";

console.log(c); // { "name" : "doe" }
console.log(d); // { "name" : "doe" }

特殊なケース、参照渡し(オブジェクト)

c = {"name" : "jane"};
console.log(c); // { "name" : "jane" }
console.log(d); // { "name" : "doe" }