以下表达式在所有情况下都相同吗?
if(obj.val && obj.val > 0){...}
和
if(obj.val){...}
我可以使用更简单的后一种表达吗?
更新
我可以只使用obj.val > 0
吗?
答案 0 :(得分:2)
没有。如果obj.val === -1
(或任何负数),则第一个表达式为false
,第二个表达式为true
。
> Boolean(-1 && -1 > 0)
false
> Boolean(-1)
true
如果您完全确定obj
是已定义的对象,则可以只使用obj.val > 0
,是的。如果obj.val
不是数字,请注意类型转换的时髦行为。
答案 1 :(得分:0)
不,他们不等同。考虑
obj = { val: -1 };
然后你的第一个表达将是假的,第二个表达将是真实的。