JavaScript 中括号的语法规则

Syntax rules for parentheses in JavaScript

我很好奇 JavaScript 中某些情况下圆括号的语法规则,例如包装代码位。我非常熟悉将它们用于条件,例如 if(this) that 和调用函数,但是我注意到我自己使用它们的其他几种方式,但我实际上并不知道规则是什么,或者如果他们连上了。

我看到的:

我见过它们用于在 IIFE 中包装一个函数 - (() => { do something })(); 中的外部对,以及当你想换行时来自箭头函数的隐式 return 语句,比如在 React 无状态功能组件中:

() => (
  <div>
    Hello World
  </div>
);

我也知道您可以将条件用多个括号括起来(没有充分的理由)并且它不会破坏任何东西:if(((true)))

我想知道的:

我发现我无法使用括号来随意组织我的代码。

这些都有关系吗? how/when 你可以包装东西的规则是什么?这完全是为了组织的缘故,还是有时功能会发生变化(我在这里特别考虑 IIFE)?

感谢您对此的任何澄清!

有一些基本的东西,完全不同,括号是这样的:

  1. 在较大的表达式中分组子表达式;
  2. 描述一些语句语法的部分(forwhile 等)
  3. 描述函数调用参数
  4. 在函数声明中描述形式参数

因此,除了第一种情况(子表达式分组)之外,考虑如何在一般意义上使用括号是没有意义的。在那种情况下,它们就像普通代数中的括号一样工作。

在其他情况下,括号是语法的一部分,它们不是可选的。不幸的是,在 运行 代码中,如果不了解语法,就无法区分一种括号和另一种括号。所以在

someFunction(x, (y + 1), z)

y + 1 周围的括号是可选的,并且是表达式语法的一部分,而整个函数参数列表周围的括号不是可选的,因为该子表达式是函数调用所必需的。

要熟悉 JavaScript 语句语法的细节确实没有捷径可走。