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

If null part of statement always runs (Underscore)

我正在处理使用下划线的遗留代码。我正在尝试向代码中添加一个 if else 语句,该语句将检查 json 是否 return 任何值,如果没有,它将 return 没有值(因此空 div).

这是我的代码:

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

这段代码似乎是 运行 if 语句,这让我因为代码而感到困惑。

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

return value/works 因为它是原始遗留代码的一部分。知道我在使用 if else 语句时做错了什么吗?

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

if(!_.isNull(datas.Recent))
如果为空,

将 return 为假。如果我是编写代码的人,如果输入为空,则 isNull return 为真,并且它前面有一个非标志。

编辑:如果我没看错,将其更改为

if(_.isNull(datas.Recent))

会修复它。

您的 datas.Recent 可能是某个 falsey 值,但不为空。如果它是 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