javascript - 使用 || 的这段代码的确切含​​义是什么? ("OR") 运算符?

标签 javascript logical-operators

我在某处看到了这段代码片段:

var idx = SOME_VALUE;

var color = {
  yellor: 1,
  red: 2,
  black: 0
};

var x = color[idx] || []; // Is this means if color[idx] is null, then return an empty array?

我只能猜测代码var x = color[idx] || []; 表示如果 color[idx] 为 null,则将空数组返回给 x,否则 x= color[idx]。我说得对吗?

不过,我还是需要一个解释。这段代码和下面的逻辑是不是一样?

CONDITION==VALUE? TRUE_goes_here : FALSE_goes_here

最佳答案

这意味着如果 color[idx] 为“falsy”,则使用空数组。 “Falsy”值是 false (当然)、0NaN""undefined null(所有其他值均为“true”)。这个习惯用法是 JavaScript 的 curiously powerful || operator 的一个例子。 *.

在这种情况下,如果 color 不包含名称由 idx 包含的属性(因为当您索引到这样的对象时,它会提供默认值)并且该键与任何现有属性名称都不匹配,结果为 undefined):x 将是 1 (如果 idx 为“yellor”)、2(如果 idx 为“red”)、0(如果 idx > 是“黑色”),如果 idx 是其他内容,则为 []

所以在问题结束时回答你的问题,基本上是的。它是:

var x = color[idx];
if (!x) {
    x = [];
}

var x = color[idx] ? color[idx] : [];

* (这是我贫血的小博客上的一篇文章。)

关于javascript - 使用 || 的这段代码的确切含​​义是什么? ("OR") 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706372/

相关文章:

javascript - 使用 HTML 在 select2 tokenizer 中设置 maxElements 属性

forms - Haskell - 命题逻辑

c - 返回逻辑运算符

swift - Vapor 2 OR 条件不适用于请求类型检查

javascript - 是否可以使用 && 运算符连接 3 个查询?

javascript - Bash 脚本在 CodeKit Hook 中不起作用

javascript - node.js 中的计算属性

javascript - 如何验证 firebase 用户当前密码

javascript - jQuery 大于和小于检查

javascript - Asp.net - 页面刷新或重新加载后保持滚动位置