0

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

var Liip = Liip || {};

有人可以向我解释这条线在做什么吗?

4

4 回答 4

3

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

于 2013-11-12T12:02:01.363 回答
1

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;
于 2013-11-12T12:09:59.680 回答
1

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

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

主要的缺陷是它基于“真实性”的概念,并且会用默认值代替数字零之类的东西。

于 2013-11-12T12:03:11.323 回答
0

这是使用惰性求值的技巧

如果您键入以下内容:

if (true || false)

然后解释器根本不看,false因为这对结果没有任何影响。这是因为||(或)将返回true如果任何组件为真,并且当我们知道第一部分的计算结果为 时true,我们可以确定整个句子的计算结果为true(在 javacript 中,只需返回这部分就更加简化了)

所以

true || anything || something

总是回来true

如果第一部分的计算结果为false,则解释器随后查看下一部分并返回anythingor somethingifanything为 false 。

这边走

0 || 0 || 2返回2

0 || 3 || 3返回3

和:

undefined || {}返回{}

true || {}返回true

&&如果第一部分不等于 false,您还可以使用让解释器查看下一部分

true && 2返回2

false && 2返回false

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

于 2013-11-12T12:09:01.207 回答