我正在学习 javascript,今天我发现了这段代码:
window.Picture2 = window.Picture2 || {};
看不懂|| {} ; 有人可以为我解释一下吗?太感谢了:)
我正在学习 javascript,今天我发现了这段代码:
window.Picture2 = window.Picture2 || {};
看不懂|| {} ; 有人可以为我解释一下吗?太感谢了:)
这是将默认值分配给全局变量的危险方法Picture2
。
window.Picture2 = window.Picture2 || {};
如果未定义,它将初始化window.Picture2
为新对象。但是,由于这是对真实性的检查,如果它具有以下任何虚假值,也将被分配一个空对象:{}
Picture2
// these are all falsy
0, NaN, null, '', undefined, false
对于所有这些情况,这可能不是所需的行为,尤其是对于、0
或Value 。NaN
false
''
编辑
“ ??
NULLISH COALESCING”运算符现在是ECMAScript标准的一部分,并且已经拥有相当不错的浏览器支持。
因此,您的用例的语法是:
window.Picture2 ?? {};
如果Picture2
等于undefined
或null
,这将评估为 false,但对于其余的虚假值则不会。
如果要为函数参数分配默认值,现在还可以编写以下内容:
function myfunc(Picture2 = {}){
/* function body */
}
默认参数语法和 nullish 合并运算符都是唯一没有副作用的分配默认值的正确方法。
window.Picture2
它为if window.Picture2
is undefined( falsy )分配一个默认的空对象
它将检查.Picture2
是否已定义,如果已使用该值,则分配Window.Picture2
给新的对象字面量。
正如@Christoph 所说 -Picture2
如果对象是falsy
.
它读作:
如果window.Picture2未定义或为null ,则将空对象分配给 window.Picture2
如果window.Picture2
未定义(在条件评估中为假),则执行 OR ( ||
) 并且window.Picture2
变成空对象。