问题描述
Is there any meaningful difference between
condition && console.log("this may run");
和
if (condition) console.log("this may run);
如果没有,哪个是最佳做法?
If not, which is a best practice?
推荐答案
你应该使用第二个。
你的代码应该说出它的含义。这就是编写语义代码的意思。如果你正在编写if条件,那么你应该使用 if
语句,因为它就是这样的。&&
在语义上是一个逻辑,并且应该在您对逻辑值感兴趣的情况下使用来自两个值的逻辑结合。
Your code should say what it means. That is what is meant by writing "semantic" code. If you are writing an if condition, then you should use the if
statement, because that's what it is there for. The &&
is, semantically, a logical and, which should be used in cases where you are interested in the logical value resulting from the logical conjunction of two values.
正如其他答案所建议的那样,编写语义代码使编写,理解和维护变得更容易。就这个评论而言:
Writing semantic code, as other answers have suggested, makes it easier to write and understand and maintain. As far as this comment goes:
请记住你六岁从现在起几个月是其他人。
Remember that "you six months from now" is "someone else".
以下是使用的一些具体原因,如果
,则表示如果
:
-
如果你想添加
else
子句,你可以添加它。如果你写了a&& b
然后你必须把它重写为a? b:c
。
If you want to add an
else
clause, you can just add it. If you have writtena && b
then you will have to rewrite it asa ? b : c
.
假设您使用过大括号,如 if(a){b ; }
,然后你可以通过写来轻松地向身体添加另一个步骤if if(a){b; C; }
。如果你写过 a&& b
,那么您需要将其重写为 a&& (b,c)
或等同物;在某些情况下,如果 c
无法用作表达式,这甚至都不可能。
Assuming you have used curly braces, as in if (a) { b; }
, then you can easily add another step to the body, by writing if (a) { b; c; }
. If you had written a && b
, then you would need to rewrite this as a && (b, c)
or something equivalent; this will not even be possible in some cases, if c
cannot function as an expression.
linters(合理地)会抱怨 a&& b
。
Some linters will (reasonably) complain about a && b
.
请注意,缩小器通常会将您的第二个示例转换为第一个示例,因此如果您使用&&
的理由是保存字节,那么它们将由缩小器保存。
Note that minifiers will typically convert your second example into the first, so if your rationale for using &&
is to save bytes, they will be saved anyway by the minifier.
这篇关于单行如果vs&&在JavaScript中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!