首页 > 解决方案 > 为什么 JavaScript 的逻辑 AND (&&) 与 if 条件不一样?

问题描述

我从事 JS 开发已经有很长时间了,多年来我一直认为我可以使用逻辑 AND 来短路条件语句。事实上,我一直在使用条件渲染的 React 组件中执行此操作。但事实证明它并不像我一直期望的那样工作。问题是,为什么?

以下是节点 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)

标签: javascriptnode.jsconditional

解决方案


if(a) ...是一个声明a && ...是一个表达式

此行为特定于控制台。如果一行计算为表达式,则输出结果,否则认为该行计算为undefined.

a && ...短路。这意味着如果a是假的,则表达式的计算结果为a。如果a为真,则表达式被评估为...

这不会影响两者在实际应用程序中而不是控制台中的使用方式。如果不使用评估的结果,则if短路评估和短路评估的行为方式相同,即...仅在条件为真时评估。


推荐阅读