Javascript文件的第一行是var w=w | |{};

Javascript文件的第一行是var w=w | |{};,javascript,Javascript,这是我正在修改的JavaScript文件的第一行,它的作用是什么?jQuery也在文件中使用 var w = w || {}; 据我所知,| |是一个逻辑运算符,这是Mozilla文档中的引用。 逻辑运算符通常与布尔(逻辑)值一起使用。如果是,则返回一个布尔值。但是,&&和| |运算符实际上返回指定操作数之一的值,因此,如果这些运算符与非布尔值一起使用,则它们可能返回非布尔值 如果w为“truthy”,则将w设置为w的当前值;如果w为“falsy”,则将w设置为空对象 Falsy值包括NaN

这是我正在修改的JavaScript文件的第一行,它的作用是什么?jQuery也在文件中使用

var w = w || {};
据我所知,| |是一个逻辑运算符,这是Mozilla文档中的引用。

逻辑运算符通常与布尔(逻辑)值一起使用。如果是,则返回一个布尔值。但是,&&和| |运算符实际上返回指定操作数之一的值,因此,如果这些运算符与非布尔值一起使用,则它们可能返回非布尔值


如果
w
为“truthy”,则将
w
设置为
w
的当前值;如果
w
为“falsy”,则将
w
设置为空对象

Falsy值包括
NaN
null
未定义
0
空字符串
,当然还有
false

其他一切都是真实的


本质上,如果w不是一个对象,它会确保w是一个对象。

如果w是“真实的”,它会将w设置为w的当前值;如果w是“虚假的”,它会将w设置为空对象

Falsy值包括
NaN
null
未定义
0
空字符串
,当然还有
false

其他一切都是真实的


本质上,如果w不是一个对象,它确保w是一个对象。

如果w包含一个非false的值,它将w分配给w,否则,它将w设置为空对象。

如果w包含一个非false的值,它将w分配给w,否则,它将w设置为空对象。

您应该将该行视为该行的缩短版本

// declare w as a variable
var w;

// if w is already declared, leave it
if (!w) {
  // if not make it an empty object
  w = {};
}
在全局上下文中(我确信这是定义的),使用var不会覆盖现有的全局上下文


因此,基本上,您要确保有一个名为w的var,您可以在其上存储属性。

您应该将该行视为该行的缩短版本

// declare w as a variable
var w;

// if w is already declared, leave it
if (!w) {
  // if not make it an empty object
  w = {};
}
在全局上下文中(我确信这是定义的),使用var不会覆盖现有的全局上下文


因此,基本上,您要确保有一个名为w的var,您可以在其上存储属性。

这是为了检查“w”是truthy还是falsy

如果“w”具有以下任何值,则为falsy:

false
0
""
null
undefined
NaN
如果表达式
(w | |{})
不是一个伪值,它将返回“w”。否则,它将返回一个空数组。因此,当您在表达式中将它赋给“w”时:
var w=w | |{}

这只是一种确保“w”不是虚假值的方法,如果以后在代码中使用它,也不会抛出任何错误。

这是为了检查“w”是真实的还是虚假的

如果“w”具有以下任何值,则为falsy:

false
0
""
null
undefined
NaN
如果表达式
(w | |{})
不是一个伪值,它将返回“w”。否则,它将返回一个空数组。因此,当您在表达式中将它赋给“w”时:
var w=w | |{}

这只是一种确保“w”不是虚假值的方法,如果以后在代码中使用它,也不会引发任何错误。

可能的重复检查w是否已定义,如果未定义,则为其分配一个空对象。可能的重复检查w是否已定义,如果未定义,它给它分配了一个空对象。
{}
的可能重复项不是数组。@GergoErdosi是的,我打错了。已修复。
{}
不是数组。@GergoErdosi是的,我打错了。固定的。