我是js的新手。让我用几个例子说明我的问题。
var temp = { key: "value" };
var data = ["v1", "v2"];
var result = [];
for (var i in data) {
var newdata = temp; /** Note here! **/
newdata.key = data[i];
result.push(newdata);
}
console.log(result);
// [ { key: 'v2' }, { key: 'v2' } ]
result
这里出乎意料。
var temp = { key: "value" };
var data = ["v1", "v2"];
var result = [];
for (var i in data) {
var newdata = { key: "value" }; /* Note here! */
newdata.key = data[i];
result.push(newdata);
}
console.log(result);
// [ { key: 'v1' }, { key: 'v2' } ]
现在result
就是我想要的。
它看起来像Python中的name binding operation。但我搜索了很多,无法得到满意的答案。所以我必须转向stackoverflow寻求帮助。
JS是否具有与Python类似的名称绑定操作?如果没有,为什么这两段代码会得到不同的结果?
我知道C ++中的引用,以及Python中的名称绑定。而且我也意识到这两者之间的差异。
我唯一感到困惑的是:在JS中,是参考还是名称绑定?或其他什么?
感谢所有评论,我完全理解它与名称绑定类似,而不是引用。 (由于我找不到任何关闭这个问题的按钮,我在这里添加答案。)