一行 if vs && in JavaScript

One-line if vs && in JavaScript

之间有什么有意义的区别吗?
condition && console.log("this may run");

if (condition) console.log("this may run);

如果不是,最佳做法是什么?

本身没有区别,但是可以说前者是后者的shorthand表示法。

我建议你使用后面的条件,它使代码更易于解释,产生相同的结果并且字符数几乎相同。

如果你能维护代码,那就使用你喜欢的代码。

如果其他人可能需要阅读或维护它,则使用第二个。

你应该使用第二个。

您的代码应该说明它的含义。这就是写 "semantic" 代码的意思。如果您正在编写 if 条件,那么您应该使用 if 语句,因为这就是它的用途。 && 在语义上是一个逻辑与,当您对两个值的逻辑合取的逻辑值感兴趣时应该使用它。

正如其他答案所建议的那样,编写语义代码可以使编写、理解和维护变得更容易。就此评论而言:

If someone else may need to read or maintain it, then use the second.

记住 "you six months from now" 是 "someone else"。

这里有一些使用 if 的具体原因,而你的意思是 if:

  1. 如果要添加else子句,直接添加即可。如果你写了 a && b 那么你必须将它重写为 a ? b : c.

  2. 假设您使用了大括号,如 if (a) { b; },那么您可以通过编写 if (a) { b; c; } 轻松地向主体添加另一个步骤。如果您写了 a && b,那么您需要将其重写为 a && (b, c) 或类似的东西;如果 c 不能用作表达式,这在某些情况下甚至是不可能的。

  3. 有些 linter 会(合理地)抱怨 a && b

请注意,缩小器通常会将您的第二个示例转换为第一个示例,因此如果您使用 && 的理由是为了节省字节,则缩小器无论如何都会保存它们。