为什么ejs模板中的分号会抛出错误

Why does a semicolon in ejs template throws error

在下面的代码中,如果删除分号,模板引擎不会抛出错误,否则会抛出错误。

<ul>
  <% for (i = 0; i < array.length; ++i) { %>
      <%= JSON.stringify(array[i]); %>
  <% } %>
</ul>

虽然分号在语法上是正确的,但为什么模板引擎会抛出错误?

正如@torazaburo 所说,<=%%> 之间的内容是由ejs 解析的表达式。但是,这样想:

您的目标是将从 JSON.stringify 返回的内容呈现到页面对吗?因此,在那种情况下,将 ejs 表达式视为对表达式的结果隐式调用 .toString(),然后将该字符串插入到页面中。通过添加分号,您已经终止了语句,而没有将返回值分配给任何东西。