【问题标题】:What does the "||" mean in javascript array creation? [duplicate]“||”是什么意思意味着在javascript数组创建中? [复制]
【发布时间】:2013-10-26 02:25:58
【问题描述】:

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

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

第二行很明显,但我对第一行一无所知-那里的||是什么,为什么不是var _array = [];

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

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

编辑:

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

【问题讨论】:

  • 您是否继续使用代码来查看语句中发生了什么?
  • @AnthonyForloney 是的,我有,但我没有注意到任何差异。

标签: javascript


【解决方案1】:

这个|character 被称为管道。

|| 成对使用时,它代表logical OR。 (它在其他语言中也被广泛使用)。

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

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


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

var _array = _array ? _array : [];

【讨论】:

    【解决方案2】:

    它检查是否定义了_array,否则,它分配一个数组给它。基本上是“使用现有的或分配新的”场景。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-02
        • 2019-07-11
        • 2015-07-15
        • 2018-07-17
        • 2020-01-21
        • 2011-04-16
        • 1970-01-01
        • 2014-07-28
        相关资源
        最近更新 更多