javascript if 语句因 ejs 而失败

javascript if statement failing with ejs

在我的 nodejs 后端,我基本上是说,一旦用户登录,设置 req.session.loggedin = true。一旦为真,并且用户呈现受保护的页面(批发定价页面),然后设置变量 wholesalelogin = true,此时所有工作。所以现在,在我的前端,我正在这样做:

<script>
          if ('<%= wholesaleuser %>' == true) {
              console.log("wholesale user is" + '<%= wholesaleuser %>')
              document.write(' <p>Price: <em>$<%= data[i].WHOLESALE_PRICE %></em>')
          } else {
            console.log("wholesale user is not" + '<%= wholesaleuser %>')
            document.write('<p>Price: <em>$<%= data[i].RETAIL_PRICE %></em>')
          }
      </script>

当我记录它时(在 console.log 中),它返回值 true,这很好,但问题是,它不是在做 document.write(' <p>Price: <em>$<%= data[i].WHOLESALE_PRICE %></em>'),而是在做零售价格一,虽然结果是真的。所以我现在假设我的 if 语句不起作用。有什么问题吗?

问题是,如果您输出用撇号包围的 wholesaleuser 变量,您最终会将字符串与布尔值 'true' == true 进行比较,结果为 false

console.log('true' == true);

恕我直言,您可以将此条件简化为以下形式

if (<%= wholesaleuser %>) {

它应该可以解决您的问题,前提是变量 wholesaleuser 始终已定义且类型为布尔值。