条件中的额外括号是否有意义?

时间:2016-11-09 11:20:50

标签: javascript

我正在处理一些较旧的JavaScript代码,偶然发现在类似条件下广泛使用额外的括号:

if ((foo)) { /* ... */ }

if (!(bar)) { /* ... */ }

if ((lorem === 'ipsum')) { /* ... */ }

if ((functionCall1()) || (functionCall2())) { /* ... */}

这种做法有意义吗?我不知道旧的JavaScript实现中的错误吗?

3 个答案:

答案 0 :(得分:3)

这些例子中的额外括号完全没有用处。

此代码的功能 完全 相同,并且(可以说)更具可读性:

if (foo) { /* ... */ }

if (!bar) { /* ... */ }

if (lorem === 'ipsum') { /* ... */ }

if (functionCall1() || functionCall2()) { /* ... */}

添加它们毫无意义。

答案 1 :(得分:1)

不,它们完全是多余的。

有些人喜欢添加多余的括号以表达其表达清晰度:特别是在使用&&||和三元条件运算符? :时。 / p>

我个人从不这样做,因为我绝对需要时只使用括号。对我来说,括号表示表达式需要偏离正常的运算符优先级才能正确计算。一个例子是在使用<<>>时,出于某种原因,它的优先级低得惊人。

答案 2 :(得分:1)

不,这太过分了。任何minifier都会摆脱它。

在相关的说明中,有一个特殊情况,额外的括号实际上有所作为,但仅在这种情况下:

(function() { /* Do something */ })();

那是对的,一个普通的IIFE。这是由于JS引擎抢先优化这种函数调用。

实际利用这个library。但是,我并不建议使用它,因为它是一种利用,可能在将来无法使用。