我在javascript方面有很多经验,但今天我第一次遇到这样的代码:
var _array = _array || [];
_array.push(['someItem']);
sedond系列很有意思,但我对第一行没有任何想法 - 那里的||
是什么,为什么不是var _array = [];
呢?
我已经对谷歌做了一些研究,但我没有得到任何线索这个奇怪的建筑真正做了什么。能请你赐教吗?
修改
我完全清楚||
是一个逻辑OR
(以及逻辑OR
如何工作的方式)但我从未见过这种方式 - 在变量声明中。< / p>
答案 0 :(得分:4)
检查是否定义了_array
,否则,它会为其分配一个数组。基本上是“使用现有或分配新”的方案。
然后第二行可以安全地运行,因为_array
(可能)是现有数组,或者是新创建的数组,由第一行提供。
答案 1 :(得分:2)
这意味着or
。在这种情况下,您可以将其读作get _array variable or create new empty array if _array doesn't exist
。
答案 2 :(得分:1)
此|
字符称为管道。
在对||
中使用时,它代表logical OR。 (它在其他语言中也被广泛使用)。
它将首先尝试执行最左边的表达式,如果该表达式的计算结果为false,它将执行最右边的表达式。
在我们的例子中,它测试变量_array
是否存在,如果存在,它基本上将_array
分配给_array
。如果它还不存在,它会将_array
初始化为空数组([]
)。
它也可以改写为三元运算符,如:
var _array = _array ? _array : [];