11

我正在学习 javascript,今天我发现了这段代码:

window.Picture2 = window.Picture2 || {};

看不懂|| {} ; 有人可以为我解释一下吗?太感谢了:)

4

5 回答 5

8

这是将默认值分配给全局变量的危险方法Picture2

window.Picture2 = window.Picture2 || {};

如果未定义,它将初始化window.Picture2为新对象。但是,由于这是对真实性的检查,如果它具有以下任何虚假值,也将被分配一个空对象:{}Picture2

// these are all falsy
0, NaN, null, '', undefined, false

对于所有这些情况,这可能不是所需的行为,尤其是对于、0或Value 。NaNfalse''

编辑
??NULLISH COALESCING”运算符现在是ECMAScript标准的一部分,并且已经拥有相当不错的浏览器支持

因此,您的用例的语法是:

window.Picture2 ?? {};

如果Picture2等于undefinednull,这将评估为 false,但对于其余的虚假值则不会。

如果要为函数参数分配默认值,现在还可以编写以下内容:

function myfunc(Picture2 = {}){
   /* function body */
}

默认参数语法和 nullish 合并运算符都是唯一没有副作用的分配默认值的正确方法。

于 2013-04-22T09:42:25.917 回答
6

window.Picture2它为if window.Picture2is undefined( falsy )分配一个默认的空对象

于 2013-04-22T09:35:37.640 回答
4

它将检查.Picture2是否已定义,如果已使用该值,则分配Window.Picture2给新的对象字面量。

正如@Christoph 所说 -Picture2如果对象是falsy.

http://www.sitepoint.com/javascript-truthy-falsy/

于 2013-04-22T09:35:37.400 回答
1

它读作:

如果window.Picture2未定义或为null ,则将空对象分配给 window.Picture2

于 2013-04-22T09:35:34.617 回答
1

如果window.Picture2未定义(在条件评估中为假),则执行 OR ( ||) 并且window.Picture2变成空对象。

于 2013-04-22T09:36:07.647 回答