JavaScript中括号的语法规则

时间:2018-05-25 17:50:40

标签: javascript syntax parentheses iife

我对JavaScript中某些情况下括号的语法规则感到好奇,例如在包装代码中。我非常熟悉将它们用于条件,例如if(this) that和调用函数,但还有其他一些方法我注意到自己使用它们而我实际上并不知道规则是什么,或者他们是否连接起来。

我所看到的:

我已经看到它们用于包裹IIFE中的函数 - (() => { do something })();中的外部对,以及当你想要破坏该行时来自箭头函数的隐式返回语句,就像在React无状态函数中一样组件:

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

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

我想知道的事情:

我发现我无法在任何地方使用括号来组织我的代码。

这些都是相关的吗?如何/何时包装东西的规则是什么?这一切是出于组织的缘故,还是有时会改变功能(我特别想到IIFE)?

感谢您明白这一点!

1 个答案:

答案 0 :(得分:1)

括号中有一些基本的东西,都是不同的:

  1. 在较大的表达式中对子表达式进行分组;
  2. 描述某些语句语法的部分内容(forwhile等)
  3. 描述函数调用参数
  4. 在函数声明中描述形式参数
  5. 因此,除了第一种情况(子表达式分组)之外,考虑如何在一般意义上使用括号是没有意义的。在这种情况下,它们就像普通代数中的括号一样工作。

    在其他情况下,括号是语法的一部分,它们不是可选的。不幸的是,在运行代码时,如果不知道语法,就不能从另一个括号中分辨出一种括号。所以在

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

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

    熟悉JavaScript语句语法的细节真的没有捷径。