我正在处理一些较旧的JavaScript代码,偶然发现在类似条件下广泛使用额外的括号:
if ((foo)) { /* ... */ }
if (!(bar)) { /* ... */ }
if ((lorem === 'ipsum')) { /* ... */ }
if ((functionCall1()) || (functionCall2())) { /* ... */}
这种做法有意义吗?我不知道旧的JavaScript实现中的错误吗?
答案 0 :(得分:3)
这些例子中的额外括号完全没有用处。
此代码的功能 完全 相同,并且(可以说)更具可读性:
if (foo) { /* ... */ }
if (!bar) { /* ... */ }
if (lorem === 'ipsum') { /* ... */ }
if (functionCall1() || functionCall2()) { /* ... */}
添加它们毫无意义。
答案 1 :(得分:1)
不,它们完全是多余的。
有些人喜欢添加多余的括号以表达其表达清晰度:特别是在使用&&
,||
和三元条件运算符? :
时。 / p>
我个人从不这样做,因为我绝对需要时只使用括号。对我来说,括号表示表达式需要偏离正常的运算符优先级才能正确计算。一个例子是在使用<<
和>>
时,出于某种原因,它的优先级低得惊人。
答案 2 :(得分:1)
不,这太过分了。任何minifier都会摆脱它。
在相关的说明中,有一个特殊情况,额外的括号实际上有所作为,但仅在这种情况下:
(function() { /* Do something */ })();
那是对的,一个普通的IIFE。这是由于JS引擎抢先优化这种函数调用。
实际利用这个library。但是,我并不建议使用它,因为它是一种利用,可能在将来无法使用。