我已经从事JavaScript开发很长时间了,多年来我一直认为可以使用逻辑AND来简化条件语句。实际上,在React组件中进行条件渲染时,我总是这样做。但事实证明它并不总是按照我的预期工作。问题是为什么?
以下是Node 8.15.0的示例:
> a = 0.0
0
> a && console.log(a)
0
> if(a) console.log(a)
undefined
> !!a && console.log(a)
false
具体来说,为什么
a && console.log(a)
不能像 if (a) console.log(a)
一样工作?
undefined
,许多 JS repl 在你提供一个不返回值的语句(例如 if 语句)时会打印出undefined
。 - y2bda && console.log(a)
是一行代码,它的意思是:if (a==true) { console.log(a) }
...请查看此答案https://dev59.com/pm035IYBdhLWcg3wSN4G#5515349 - Chamovfalsey && val
的结果为falsey
。truthy && val
的结果为val
。你期望得到什么结果?为什么? - user5734311a && console.log(a)
不等同于if (a) console.log(a)
? - DaKaZvar result = a && console.log(a)
的意思很清楚。但是var result = if (a) console.log(a)
就不太对了。所以你为什么希望这两者表现出相同的行为呢? - user5734311