我最近从网上下载了一个代码并试图理解它。我在 js 文件的正上方找到了一行,如下所示:
var Liip = Liip || {};
有人可以向我解释这条线在做什么吗?
这意味着Liip
它将保留Liip
,如果未定义,则它将是一个空对象{}
If Liip
is undefined
it will assign {}
.
It can be expressed also as:
Liip = Liip? Liip: {};
OR
if (Liip){
Liip = Liip;
}
else {
Liip = {};
}
OR
if (typeof(Liip) === 'undefined'){
Liip = {};
}
else {
Liip = Liip;
}
For reference: It's equivalent to C#:
int? nullableInt = getNumber();
int Liip = nullableInt?? 0;
这是使用惰性求值的技巧
如果您键入以下内容:
if (true || false)
然后解释器根本不看,false
因为这对结果没有任何影响。这是因为||
(或)将返回true
如果任何组件为真,并且当我们知道第一部分的计算结果为 时true
,我们可以确定整个句子的计算结果为true
(在 javacript 中,只需返回这部分就更加简化了)
所以
true || anything || something
总是回来true
如果第一部分的计算结果为false
,则解释器随后查看下一部分并返回anything
or something
ifanything
为 false 。
这边走
0 || 0 || 2
返回2
0 || 3 || 3
返回3
和:
undefined || {}
返回{}
true || {}
返回true
&&
如果第一部分不等于 false,您还可以使用让解释器查看下一部分
true && 2
返回2
false && 2
返回false
这是因为&&
(AND)true
如果所有组件的计算结果为 ,则返回true
。因此,无需查看2
第一部分是否为false
.