脱咖啡因:双括号

Decaffeinated: Double Brackets

我最近取消了一个旧项目,我注意到我有很多 if clauses 表达式被包裹在 "extra" 括号中:

if ((data == null) || (data === ""))

有没有需要包裹的情况?恕我直言,它与以下内容相同:

if (data == null || data === "")

通过显式检查,您可以省略比较周围的括号,因为 operator precedence of ==/=== over logical OR ||.

if (data == null || data === "")

在那种情况下没关系,但无论何时从 if 语句(或几乎任何地方)中删除括号,请确保检查 precedence table.

例如,从中删除括号:

if ((someVar && someConditional) == someBool)

会导致:

if (someVar && someConditional == someBool)

这是完全不同的。由于括号的缘故,第一个示例将首先计算 someVar && someConditional,然后计算 resultOfOperation == someBool。在第二个示例中,由于 && 的优先级较高,因此首先评估 someConditional == someBool,然后评估 0 && resultOfOperation