Синтаксические правила для скобок в JavaScript - PullRequest
0 голосов
/ 25 мая 2018

Мне любопытно узнать о правилах синтаксиса для круглых скобок при определенных обстоятельствах в JavaScript, например, при переносе битов кода.Я хорошо знаком с их использованием для условий, таких как if(this) that, и для вызова функций, но есть несколько других способов, которыми я заметил, что сам их использую, и я на самом деле не знаю, каково правило, или если ониВы даже подключены.

То, что я видел:

Я видел, как они использовали для переноса функции во IIFE - внешней паре в (() => { do something })();, а также в неявных операторах возвратаиз функций стрелок, когда вы хотите разбить строку, как в функциональных компонентах React без состояния:

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

Я также знаю, что вы можете заключить условие в несколько скобок (без веской причины), и это нене ломай ничего: if(((true))).

Что я хочу знать:

Я обнаружил, что не могу использовать скобки для организации своего кода именно там, где я хочу.

Все ли они связаны?Какое правило для того, как / когда вы можете обернуть вещи?Это все ради организации или иногда меняются функциональные возможности (я имею в виду, в частности, IIFEs здесь)?

Спасибо за ясность в этом вопросе!

1 Ответ

0 голосов
/ 25 мая 2018

В скобках есть несколько базовых вещей, отличающихся друг от друга:

  1. Группировать подвыражения внутри более крупного выражения;
  2. Делить части некоторых синтаксисов операторов (for, while и т. Д.)
  3. Разграничение параметров вызова функции
  4. Разграничение формальных параметров в объявлениях функций

Поэтому не имеет смысла думать о том, как можно заключить скобкииспользуется в общем смысле, за исключением первого случая (группировка подвыражений).В этом случае они работают как круглые скобки в обычной алгебре.

В других случаях круглые скобки являются частью синтаксиса и не являются обязательными.К сожалению, при выполнении кода вы не можете отличить один вид скобок от другого, просто не зная синтаксиса.Таким образом, в

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

круглые скобки вокруг y + 1 являются необязательными и являются частью грамматики выражения, тогда как круглые скобки в общем списке аргументов функции не являются необязательными, поскольку для этого подвыражения требуется вызов функции.

Нет никакого способа узнать подробности синтаксиса операторов JavaScript.

...