带OR的javascript数组声明

时间:2013-08-24 12:53:17

标签: javascript arrays

我在学习项目时发现了以下javascript行:

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

任何人都可以告诉我为什么有人像上面那样宣布数组​​而不是:
 var array = [];

更新:在得到答案后,我想出了更可读的方法来执行上述操作:

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

2 个答案:

答案 0 :(得分:7)

与简单var array = [];的区别在于,如果已存在现有值,则此值不会替换为[]

这是因为

这相当于

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

当你有一个模块化代码并且不想强制执行导入命令时,这种结构很常见:你可能有很多以同一行开头的文件:

var myModule = myModule || {};

以下是一个示例:SpaceBullet source code(查看js文件的第一行)。

答案 1 :(得分:2)

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

您将看到{}

的类似声明
var someObject = anObject || {};