我正在学习 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 。NaNfalse''
编辑
“ ??NULLISH COALESCING”运算符现在是ECMAScript标准的一部分,并且已经拥有相当不错的浏览器支持。
因此,您的用例的语法是:
window.Picture2 ?? {};
如果Picture2等于undefined或null,这将评估为 false,但对于其余的虚假值则不会。
如果要为函数参数分配默认值,现在还可以编写以下内容:
function myfunc(Picture2 = {}){
/* function body */
}
默认参数语法和 nullish 合并运算符都是唯一没有副作用的分配默认值的正确方法。
window.Picture2它为if window.Picture2is undefined( falsy )分配一个默认的空对象
它将检查.Picture2是否已定义,如果已使用该值,则分配Window.Picture2给新的对象字面量。
正如@Christoph 所说 -Picture2如果对象是falsy.
它读作:
如果window.Picture2未定义或为null ,则将空对象分配给 window.Picture2
如果window.Picture2未定义(在条件评估中为假),则执行 OR ( ||) 并且window.Picture2变成空对象。