我的json文件中有一个变量enabled:"false"
,我在ejs文件中读取内容变量中的数据。
但是当我检查条件时:
<% if(content.enabled) { %>
<h1>foo</h1>
<% } %>
条件同时适用于"true"
和"false"
,这可能不是正确的检查方法。
包括if
在内的==
条件的正确方法是什么。
最佳做法是什么?
答案 0 :(得分:1)
我建议您不要将boolean
值用作string
。例如,当您使用"false"
而不是false
时。 JS认为它是一个真正的价值。在JS中,除了false
,0
,""
,null
,undefined
和NaN
之外,所有值都是真实的。所以,当你说enabled:"false"
时,实际上确实如此。
有关truthy值的详细信息,请检查this。
对于你的问题;在JSON中将变量设置为;
{ "enabled" : false }
您的代码将有效。
为了进行比较,我建议严格相等===
,因为它也在比较值类型。例如;
0 == false //returns true
0 === false //returns false
您可以找到详细信息here。
答案 1 :(得分:0)
您的方法只有正确,您也可以添加其他条件,例如
<% if (content.enabled=="true" || content.enabled==true) { %>
<h1>foo</h1>
<% } else { %>
<h1>false content</h1>
<% } %>