我最近从网上下载了一段代码并尝试了解它。我在js文件的正上方找到了一行,如下所示:
var Liip = Liip || {};
有人可以向我解释一下这行是做什么的吗?
答案 0 :(得分:3)
这意味着Liip
将保留Liip
,如果未定义,那么它将是一个空对象{}
答案 1 :(得分:1)
答案 2 :(得分:1)
如果Liip
为undefined
,则会指定{}
。
它也可以表示为:
Liip = Liip? Liip: {};
OR
if (Liip){
Liip = Liip;
}
else {
Liip = {};
}
OR
if (typeof(Liip) === 'undefined'){
Liip = {};
}
else {
Liip = Liip;
}
供参考: 它相当于C#:
int? nullableInt = getNumber();
int Liip = nullableInt?? 0;
答案 3 :(得分:0)
这是使用延迟评估的技巧
如果您键入以下内容:
if (true || false)
然后解释器根本不看false
,因为这对结果没有任何影响。这是因为||
(或)将返回true
如果任何组件都是真的,当我们知道第一部分评估为true
时,那么我们可以确定整个句子评估到true
(在javacript中,只需返回此部分即可更简化)
所以
true || anything || something
始终返回true
如果第一部分评估为false
,则解释器会查看下一部分,如果anything
也为假,则返回something
或anything
。< / p>
这样
0 || 0 || 2
返回2
0 || 3 || 3
返回3
和
undefined || {}
返回{}
true || {}
返回true
如果第一部分不等于假,您还可以使用&&
让翻译人员查看下一部分
true && 2
返回2
false && 2
返回false
这是因为如果所有组件的评估结果为&&
,则true
(AND)会返回true
。因此,如果第一部分是2
,则无需查看false
。