EJS文件中编写else if条件语句抛出语法错误如何修复
EJS中else if语法报错修复方案
错误原因
EJS解析模板时,会把不同<% %>脚本标签之间的所有内容(包括换行、缩进空格)识别为需要输出的模板文本,编译为对应的JS输出代码。你当前的写法把前一个判断块的闭合大括号}和后续的else if拆到了两个独立的脚本标签中,编译后生成的JS代码会在}和else if之间插入输出空白内容的逻辑,直接违反JS语法规则,因此抛出语法错误。
另外你当前代码中if和else if的判断条件完全一致,逻辑上else if分支永远不会被触发,属于逻辑bug,需要按实际业务需求调整判断条件。
修复方式
将前一个判断块的闭合大括号、else if语句、后续的开括号放在同一个<% %>脚本标签内,不要拆分即可解决语法问题,修正后的参考代码如下:
<% if(locals.user && locals.user.id == post.user.id){ %> <small> <a href="/comments/destroy/?comment_id=<%= comment.id %>&post_id=<%= post.user.id %>"> <i class="fa fa-trash"></i> </a> </small> <% } else if(locals.user && locals.user.id == comment.user.id){ %> <!-- 注:此处判断条件已按删除评论的常规逻辑调整为「当前用户是评论作者」,你可以根据实际需求修改 --> <small> <a href="/comments/destroy/<%= comment.id %>"> <i class="fa fa-trash"></i> </a> </small> <% } %>
如果需要写多分支判断,所有的} else if(...) {、} else {都要遵循这个规则,和前一个块的闭合大括号放在同一个EJS脚本标签中,不要拆分到不同标签里。
内容的提问来源于stack exchange,提问作者Ankit Chugh
相关产品推荐
相关产品推荐

