Javascript có phải là ngôn ngữ pass-by-reference hoặc pass-by-value không?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
290 lượt xem
Javascript master

Nó luôn pass-by-value, nhưng đối với các đối tượng, giá trị của biến đối tượng đó là một tham chiếu (reference). Do đó, khi bạn truyền một đối tượng và thay đổi các thành viên của nó, những thay đổi đó vẫn tồn tại bên ngoài hàm. Điều này làm cho nó giống như đi qua tham chiếu. Nhưng nếu bạn thực sự thay đổi giá trị của biến đối tượng, bạn sẽ thấy rằng thay đổi không tồn tại, chứng tỏ rằng nó thực sự chuyển qua giá trị.

Ví dụ:

function changeStuff(a, b, c)
{
   a = a * 10;
   b.item = "changed";
   c = {item: "changed"};
} 
var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};

changeStuff(num, obj1, obj2);

console.log(num);
console.log(obj1.item);
console.log(obj2.item);

Kết quả:

10
changed
unchanged
{{login.error}}