backbone.js 语句的If null部分始终运行(下划线)

ecfsfe2w  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(172)

我正在处理使用下划线的遗留代码。我试图在代码中添加一个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语句时做错了什么吗?

up9lanfz

up9lanfz1#

datas.Recent可能是某个falsey值,但不是空值。如果它是false、空字符串或(最有可能的)undefined,则它是falsey,但不是空值。例如:

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
yhxst69z

yhxst69z2#

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

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

如果输入为空,则返回false,如果我是编写代码的人,则isNull返回true,如果输入为空,并且前面有一个not标志。
编辑:如果我没猜错,将其更改为

if(_.isNull(datas.Recent))

就能解决问题。

相关问题