3

我在研究项目时发现了下面的 javascript 行:

var array = array || [];    // <--- confusion here (what does || mean)

谁能告诉我为什么有人像上面一样声明数组而不是:
var array = [];

更新:得到答案后,我想出了更易读的方法来完成上述操作:

if(array == undefined) 
    var array = [];
4

2 回答 2

7

与 simple 的区别var array = [];在于,如果已经存在一个值,则该值不会替换为[].

它有效,因为

这相当于

var array; // does nothing if array is already declared in the same scope
if (!array) array = [];

当您有模块化代码并且不想强加导入顺序时,这种结构很常见:您可能有许多以同一行开头的文件:

var myModule = myModule || {};

这是一个示例:SpaceBullet 源代码(查看 js 文件的第一行)。

于 2013-08-24T12:54:19.650 回答
2

这意味着:如果有一个值或数组被初始化,则将其分配给该变量,否则,将该变量初始化为一个空数组。

您将看到与 {} 类似的声明

var someObject = anObject || {};
于 2013-08-24T12:56:04.810 回答