Javascript 使用ES6模板循环

Javascript 使用ES6模板循环,javascript,ecmascript-6,Javascript,Ecmascript 6,为什么浏览器抱怨模板中缺少} 更新:答案是“;”所以浏览器说错了。 Update2:仍然不工作,因为foreach不返回任何内容。 更新3:我知道如何使用地图,这不是我的问题 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge">

为什么浏览器抱怨模板中缺少}

更新:答案是“;”所以浏览器说错了。 Update2:仍然不工作,因为foreach不返回任何内容。 更新3:我知道如何使用地图,这不是我的问题

  <!DOCTYPE html>
  <html>
  <head>
      <meta charset="utf-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <title>Test</title>
      <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
      <div id="test">
      </div>

      <script>

          let names = ["a", "b"];
          template = `<table>
          ${names.forEach(name => {
              `<TR><TD>${name}</TD></TR>`}
            );
          }
          </table>
          `;
          let div = document.getElementById("test");
          div.innerHTML = template;
      </script>
  </body>
  </html>

试验
让名称=[“a”,“b”];
模板=`
${names.forEach(name=>{
`${name}`}
);
}
`;
设div=document.getElementById(“测试”);
div.innerHTML=模板;
这样做怎么样

let names = ["a", "b"];
template = `<table>
            ${names.map(name => `<TR><TD>${name}</TD></TR>`)}
          </table>
          `;
console.log(template);
let div = document.getElementById("test");
div.innerHTML = template;
let name=[“a”,“b”];
模板=`
${names.map(name=>`${name}`)}
`;
控制台日志(模板);
设div=document.getElementById(“测试”);
div.innerHTML=模板;

forEach
方法不返回任何内容。您应该
map
,因为您希望返回一个数组。

因为您的模板文本中缺少一个}。最后,@senojoeht这是我的问题:我在模板中看不到任何缺失的}literal@csmckelvey我数了数,每一个都有两个,因为你有一个额外的
。下一步你会发现它不能做你想让它做的事情,但我认为这是一个单独的问题。是的,对不起,这是分号,我知道我可以用map。但在这里,我想理解为什么foreach的语法不起作用啊,好吧,但map也会返回“,”这使事情变得复杂,因为我必须摆脱“,:(真的有办法使用foreach吗?.join(“”)会删除逗号。我知道,但我仍然想知道foreach是否有办法,或者是否真的不可能:)您可以使用
forEach
,但随后需要手动将
推入一个数组并使用该数组。查看