为什么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()
,然后将该字符串插入到页面中。通过添加分号,您已经终止了语句,而没有将返回值分配给任何东西。
在下面的代码中,如果删除分号,模板引擎不会抛出错误,否则会抛出错误。
<ul>
<% for (i = 0; i < array.length; ++i) { %>
<%= JSON.stringify(array[i]); %>
<% } %>
</ul>
虽然分号在语法上是正确的,但为什么模板引擎会抛出错误?
正如@torazaburo 所说,<=%
和%>
之间的内容是由ejs 解析的表达式。但是,这样想:
您的目标是将从 JSON.stringify
返回的内容呈现到页面对吗?因此,在那种情况下,将 ejs 表达式视为对表达式的结果隐式调用 .toString()
,然后将该字符串插入到页面中。通过添加分号,您已经终止了语句,而没有将返回值分配给任何东西。