为什么ejs模板中的分号会引发错误

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

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

尽pipe把分号放在句法上是正确的,为什么模板引擎会抛出错误呢?

正如@torazaburo所说, <=%%>之间的内容是由ejsparsing的expression式。 不过,这样想:

您的目标是将从JSON.stringify返回的内容呈现给页面? 所以在这种情况下,将ejsexpression式看作是隐式调用expression式结果的.toString() ,然后将该string插入到页面中。 通过添加一个分号,你已经终止了这个语句,而不用把返回的值赋给任何东西。