Javascript 我很困惑if-else在ejs中的工作方式是否不同

Javascript 我很困惑if-else在ejs中的工作方式是否不同,javascript,node.js,if-statement,ejs,Javascript,Node.js,If Statement,Ejs,我想知道这段代码有什么问题。我试图实现一个登录代码,在这里,我想如果有一个条件将是真的,那么只有显示注销显示登录或注册 <% if(!currentUser) {%> <li><a href="/login">Login</a></li> <li><a href="/register">Register</a></li> <% } %> <

我想知道这段代码有什么问题。我试图实现一个登录代码,在这里,我想如果有一个条件将是真的,那么只有显示注销显示登录或注册

<% if(!currentUser) {%>
    <li><a href="/login">Login</a></li>
    <li><a href="/register">Register</a></li>
    <% } %>
    <% else { %>
    <li><a href="#">Signed In As : <%= currentUser.username %> </a></li>
    <li><a href="/logout">Logout</a></li>
<%}%>

  • 这是一个错误的代码,我发现如果我在一行代码中运行代码,而不是给其他代码一个新行,但是js不是这样的,我只想知道这意味着什么,如果我运行这个代码,它就会工作

    <% if(!currentUser) {%>
        <li><a href="/login">Login</a></li>
        <li><a href="/register">Register</a></li>
        <% } else { %>
        <li><a href="#">Signed In As : <%= currentUser.username %> </a></li>
        <li><a href="/logout">Logout</a></li>
    <%}%>
    
    
    
  • 但是
    else
    需要立即跟随
    if(条件)
    之后的块。你不能让一些东西在它之前写代码


    但是
    else
    需要立即跟随
    if(条件)
    之后的块。你不能在它之前编写代码。

    它是特定于ejs的imo,它解析模板标记的方式是特定于ejs的imo,它解析模板标记的方式
    <% } %>
    <% else { %>
    
    }
    document.write("\n    ");
    else {