Javascript statement with || {};

Javascript statement with || {};

本文关键字:Javascript with statement      更新时间:2023-09-26

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

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

我不明白的|| {};有人能给我解释一下吗?非常感谢:)

将默认值赋给全局变量Picture2是一种危险的方式。

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

这将初始化window.Picture2作为一个新的对象{},如果它没有定义。然而因为这是对真实性的检查,如果Picture2有以下任何一个假值,它也将被分配一个空对象:

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

可能不是所有这些情况下所期望的行为,特别是对于0, NaN, false''值。

编辑
?? "NULLISH COALESCING"操作符现在是ECMAScript标准的一部分,并且已经得到了相当不错的浏览器支持。

所以你用例的语法应该是:

window.Picture2 ?? {};

如果Picture2等于undefinednull,该值将被计算为false,但对其他假值不计算。

如果你想给函数参数赋一个默认值,你现在也可以这样写:

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

默认参数语法和空合并操作符是唯一正确的分配默认值而没有副作用的方法。

如果window.Picture2未定义(false),则为window.Picture2分配一个默认的空对象

它将检查.Picture2是否已经定义,如果使用了该值,则将Window.Picture2赋值给一个新的对象字量

如@Christoph所述-如果对象是falsy,则Picture2将被分配一个新的对象字面量。

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

读作:

如果窗口。图2undefinednull分配空对象窗口。Picture2

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