我在某处看到了这段代码片段:
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
(当然)、0
、NaN
、""
、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/