0

我在javascript方面有相当多的经验,但是今天我第一次遇到这样的代码:

var _array = _array || [];
_array.push(['someItem']);

sedond 行是 obious,但我对第一行一无所知 - 那里是什么||,为什么var _array = [];不是呢?

我在谷歌上做了一些研究,但我不知道这个奇怪的结构到底做了什么。你能启发我吗?

  • 这是什么奇怪的结构?
  • 那和简单的数组声明有什么区别?
  • 为什么会有人使用它?当我看到那行代码时,我的眼睛受伤了......

编辑:

我完全知道这||是一个逻辑OR(以及逻辑如何OR工作的方式),但我从未见过它以这种方式使用 - 在变量声明中。

4

3 回答 3

4

它检查是否_array已定义,否则,它会为其分配一个数组。基本上是“使用现有的或分配新的”方案。

然后第二行可以安全运行,因为_array(可能)是现有数组或新创建的数组,由第一行提供。

于 2013-10-17T14:26:11.193 回答
2

这意味着or。在这种情况下,您可以将其读取为get _array variable or create new empty array if _array doesn't exist.

于 2013-10-17T14:26:01.700 回答
1

这个|字符被称为管道。

当成对使用时,||它代表一个逻辑 OR。(它也广泛用于其他语言)。

它将尝试首先执行最左侧的表达式,如果该表达式的计算结果为 false,它将执行最右侧的表达式。

在我们的例子中,它测试变量是否_array存在,如果存在,它基本上分配_array_array. 如果它还不存在,它将初始化_array为一个空数组 ( [])。


它也可以重写为三元运算符,例如:

var _array = _array ? _array : [];
于 2013-10-17T14:33:02.063 回答