Привет, недавно изучаю js и при работе над проектом столкнулся со странностью. Когда задаю переменные глобально, при вызове функции происходит... Перемножение i между циклами? Не знаю, как еще это объяснить. Думал, что дело в области видимости или передаче массива commentsList по ссылке, но не нашел информации, объясняющей это поведение. Вот код, при котором можно наблюдать эффект - вместо трех комментариев в каждый объект записывается 15.
var comment,
commentsList = [];
var getCommentsList = function() {
for (let i = 0; i < 3; i++) {
comment = "Привет, мир!";
commentsList.push(comment);
}
return commentsList;
};
var testArr = [];
for (let i = 0; i < 5; i++) {
testArr.push({
name: "Название объекта",
sometext: getCommentsList()
});
}
console.log(testArr);
А вот код, при котором все работает нормально:
var getCommentsList = function() {
var comment,
commentsList = [];
for (let i = 0; i < 3; i++) {
comment = "Привет, мир!";
commentsList.push(comment);
}
return commentsList;
};
var testArr = [];
for (let i = 0; i < 5; i++) {
testArr.push({
name: "Название объекта",
sometext: getCommentsList()
});
}
console.log(testArr);