如果语句的null部分始终运行(Underscore)

时间:2018-02-08 12:16:55

标签: javascript html backbone.js underscore.js

我使用使用下划线的遗留代码。我试图在代码中添加一个if else语句,它将检查json是否返回任何值,如果不是,它将不返回任何值(因此为空div)。

这是我的代码:

<% if(!_.isNull(datas.Recent)) {%>
<div></div>
<% } else { %>
<div class="contents"><%=datas.Recent%</div>
<% } %>

此代码似乎只运行if语句,因为代码而使我感到困惑。

<% if(datas.Recent) {%>
<div class="contents><%=datas.Recent%</div>
<% } %>

返回值/是否有效,因为它是原始遗留代码的一部分。知道我在使用if else语句时出错了吗?

2 个答案:

答案 0 :(得分:1)

您的datas.Recent可能是某个this question值,但不是null。如果它是false,空字符串或(很可能)undefined,则它是假的,但不是空的。例如:

var notanull = false;
console.log(!notanull); // true
console.log(notanull === null); // false
console.log(!_.isNull(notanull)); // false

更有可能的是,您正在处理尚未赋值的对象属性。那将是undefined

var obj = {one: 'two'};
console.log(obj.three); // undefined
console.log(typeof(obj.three)); // 'undefined'

console.log(!obj.three); // true
console.log(obj.three === null); // false
console.log(_isNull(obj.three)); // false

答案 1 :(得分:0)

没有使用任何遗留代码,但在我看来

if(!_.isNull(datas.Recent))
如果

为null,则返回false。如果我是编写代码的人,如果输入为null,则返回true,并且前面有一个not flag。

编辑:如果我正确地将其更改为

if(_.isNull(datas.Recent))

会解决它。