可能重复:
What does “options = options || {}” mean in Javascript?两个管道符号(OR)
我在JS看到了这一点:
item = item || {};
我猜这是三元运算符的一些变体,但实际上做了什么?
可能重复:
What does “options = options || {}” mean in Javascript?两个管道符号(OR)
我在JS看到了这一点:
item = item || {};
我猜这是三元运算符的一些变体,但实际上做了什么?
(expr1 || expr2)
“返回expr1的,如果它可以被转换成真;否则,返回 表达式2”。
所以当expr1
是(或计算结果为)这些0,"",false,null,undefined,NaN
之一,那么expr2
返回,否则expr1
返回
它等同于:
if(!item){ item = {}; }
因此,如果项目是假的,那么项目是一个空对象? – benhowdle89 2012-04-27 22:44:32
'false'或'undefined'或者其他任何有价值的东西,是的 – 2012-04-27 22:45:05
为什么这是低票? – 2012-04-27 22:45:54
如果项目存在,设置项项目,或将其设置为{}
你不值得投票。 – 2012-04-27 23:05:15
@Sheikh是的,答案没有错,但我觉得它很差。 Kolink和ajax在这里有最好的答案。特别是Kolink值得赞赏 – 2012-04-27 23:06:32
@你为什么不喜欢? 。 – 2012-04-27 23:08:21
这就是所谓的冗余,但在这种情况下,它是一件好事。基本上,如果item
没有定义(或以其他方式falsy(false
,0
,""
...),然后我们给它一个默认值
最常见的例子是在事件:
evt = evt || window.event;
您不配拥有反对票。 – 2012-04-27 23:05:44
我们是否一些JavaScript snobbs在家里今晚downvoting或只是一般的无聊的人! ? – benhowdle89 2012-04-27 22:48:20
@Martin。你会建议我可以搜索接收这个答案... – benhowdle89 2012-04-27 22:49:35
好问题。我一直在寻找一段时间,最后[明白了](http://stackoverflow.com/questions/9579262/logical-operator-in-javascript-0-stands-for-boolean-false)。但说实话,这并不像我想象的那么容易。恢复我所有的赞扬 – 2012-04-27 22:58:28