var = var ||是什么意思? {}

时间:2013-11-12 12:00:03

标签: javascript

我最近从网上下载了一段代码并尝试了解它。我在js文件的正上方找到了一行,如下所示:

var Liip = Liip || {};

有人可以向我解释一下这行是做什么的吗?

4 个答案:

答案 0 :(得分:3)

这意味着Liip将保留Liip,如果未定义,那么它将是一个空对象{}

答案 1 :(得分:1)

这是一个常用的习惯用法,用于为尚未指定的事物指定默认值。

在这种情况下,它使Liip默认为空对象。

主要的缺陷是它基于"truthiness"的概念,并且会用默认值替换数字零。

答案 2 :(得分:1)

如果Liipundefined,则会指定{}

它也可以表示为:

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也为假,则返回somethinganything。< / p>

这样

0 || 0 || 2返回2

0 || 3 || 3返回3

undefined || {}返回{}

true || {}返回true

如果第一部分不等于假,您还可以使用&&让翻译人员查看下一部分

true && 2返回2

false && 2返回false

这是因为如果所有组件的评估结果为&&,则true(AND)会返回true。因此,如果第一部分是2,则无需查看false