Есть ли в JS операции связывания имен?

Я новичок в 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. Но я много гуглил и не мог получить удовлетворенный ответ. Поэтому я должен обратиться за помощью к stackru.

Мой вопрос:

Есть ли в JS операция связывания имен, аналогичная Python? Если нет, то почему эти два кода получают разные результаты?

[Редактировать]

Я знаю о ссылках в C++ и привязке имен в Python. И я также знаю о различиях между этими двумя.

Единственное, что меня смутило, было: в JS это ссылка или привязка имени? Или что-то другое?

Благодаря всем комментариям я полностью понимаю, что это похоже на привязку имени, а не ссылку. (Поскольку я не могу найти ни одной кнопки, чтобы закрыть этот вопрос, я добавляю ответ здесь.)

0 ответов

Другие вопросы по тегам