【发布时间】:2019-04-27 13:14:04
【问题描述】:
通过学习,我了解到在 javascript 中,可变对象() 由 call-by-reference 处理,而 不可变对象 是由按值调用调用约定处理。
假设我使用这种数据,
var Node = function(data) {
this.data = data;
this.next = null;
};
var v = new Node(0);
v是可变对象还是不可变对象??
【问题讨论】:
-
什么是不可变对象?你是说原始类型吗?
-
JavaScript 中的每个参数都是按值传递的。你的变量是一个对象。
-
它是可变的,因为您可以更改/添加/删除对象的属性
-
@Pointy 能不能多解释一下“JavaScript 中的每个参数都是按值传递的”。考虑一个函数
const f = (x) => x如果我们将一个对象{a:1}传递给它。它将通过引用传递。 -
@MaheerAli 每个对象都是一个引用值,但每个参数仍然是按值传递的。如果你调用
f(y),那么重新分配给x并不能改变y持有的内容。
标签: javascript calling-convention function-object