Javascript 如果语句的null部分始终运行(下划线)

Javascript 如果语句的null部分始终运行(下划线),javascript,html,backbone.js,underscore.js,Javascript,Html,Backbone.js,Underscore.js,我正在使用使用下划线的遗留代码。我试图在代码中添加一个if-else语句,它将检查json是否返回任何值,如果不返回,它将不返回任何值(因此为空div) 这是我的密码: <% if(!_.isNull(datas.Recent)) {%> <div></div> <% } else { %> <div class="contents"><%=datas.Recent%</div> <% } %> 没有使

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

这是我的密码:

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


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

if(!_.isNull(datas.Recent))
如果为null,则返回false。如果我是编写代码的人,那么如果输入为null,并且前面有一个not标志,那么isNull将返回true

编辑:如果我是对的,将其更改为

if(_.isNull(datas.Recent))

将修复它。

很可能您的
数据。最近的
是一些值,但不是空值。如果它是
false
、空字符串或(很可能是)
未定义的
,则它是false,但不是null。例如:

var notanull = false;
console.log(!notanull); // true
console.log(notanull === null); // false
console.log(!_.isNull(notanull)); // false
更可能的情况是,您正在处理尚未给定值的对象属性。这将是
未定义的

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
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