JS有名称绑定操作吗?

时间:2016-12-06 17:48:57

标签: javascript name-binding

我是js的新手。让我用几个例子说明我的问题。

代码1

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这里出乎意料。

代码2

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中,是参考还是名称绑定?或其他什么?

感谢所有评论,我完全理解它与名称绑定类似,而不是引用。 (由于我找不到任何关闭这个问题的按钮,我在这里添加答案。)

0 个答案:

没有答案