我正在做一个简单的循环。我不明白为什么我在控制台时会得到不同的结果。记录循环的输出以及当我将其打印到屏幕时。
const list = document.getElementById('list');
const results = [1, 2, 5];
let listItems;
for (let r of results) {
listItems = listItems + `<li>${r}</li>`;
console.log(r);
}
list.innerHTML = listItems;
//// console.log returns 1, 2, 5
//// in the DOM, i get undefined, 1, 2, 5
您可以在我的codepen中尝试。
感谢您的帮助。
答案 0 :(得分:4)
这是因为listItems
最初是undefined
。
let listItems;
console.log(listItems); // undefined
&#13;
将其初始化为空字符串,或使用数组连接:
let listItems = '';
for (let r of [1, 2, 5])
listItems += `<li>${r}</li>`;
console.log(listItems);
listItems = [];
for (let r of [1, 2, 5])
listItems.push(`<li>${r}</li>`);
console.log(listItems.join(''));
&#13;
答案 1 :(得分:2)
答案 2 :(得分:1)
这是因为listItems
是undefined
,当你向undefined
变量添加字符串'foo'时,结果是'undefinedfoo`。
正确的版本如下:
const list = document.getElementById('list');
const results = [1, 2, 5];
let listItems = '';
for (let r of results) {
listItems = listItems + `<li>${r}</li>`;
console.log(r);
}
list.innerHTML = listItems;
答案 3 :(得分:0)
因为letItems第一次未定义。在循环中设置它之后,它第二次只有一个值。
这样做:
let listItems = '';