Javascript 对于返回意外未定义的循环的类型

Javascript 对于返回意外未定义的循环的类型,javascript,Javascript,我正在做一个简单的for…of循环。我不明白为什么我在console.log循环输出和打印到屏幕时会得到不同的结果 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); } li

我正在做一个简单的for…of循环。我不明白为什么我在console.log循环输出和打印到屏幕时会得到不同的结果

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
你可以在我的房间里试试

感谢您的帮助。

这是因为列表项最初未定义

让我们列出项目;
console.loglistItems;//未定义因为在循环的第一次迭代中,listItems是未定义的。给它一个空字符串:

let listItems = '';
let listItems = '';
这是因为listItems是未定义的,当您向未定义的变量添加字符串“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;

因为letItems第一次是未定义的。它只有在循环中设置后的第二次才有一个值

这样做: