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)?
感谢您对此的任何澄清!
有一些基本的东西,完全不同,括号是这样的:
- 在较大的表达式中分组子表达式;
- 描述一些语句语法的部分(
for
、while
等)
- 描述函数调用参数
- 在函数声明中描述形式参数
因此,除了第一种情况(子表达式分组)之外,考虑如何在一般意义上使用括号是没有意义的。在那种情况下,它们就像普通代数中的括号一样工作。
在其他情况下,括号是语法的一部分,它们不是可选的。不幸的是,在 运行 代码中,如果不了解语法,就无法区分一种括号和另一种括号。所以在
someFunction(x, (y + 1), z)
y + 1
周围的括号是可选的,并且是表达式语法的一部分,而整个函数参数列表周围的括号不是可选的,因为该子表达式是函数调用所必需的。
要熟悉 JavaScript 语句语法的细节确实没有捷径可走。
我很好奇 JavaScript 中某些情况下圆括号的语法规则,例如包装代码位。我非常熟悉将它们用于条件,例如 if(this) that
和调用函数,但是我注意到我自己使用它们的其他几种方式,但我实际上并不知道规则是什么,或者如果他们连上了。
我看到的:
我见过它们用于在 IIFE 中包装一个函数 - (() => { do something })();
中的外部对,以及当你想换行时来自箭头函数的隐式 return 语句,比如在 React 无状态功能组件中:
() => (
<div>
Hello World
</div>
);
我也知道您可以将条件用多个括号括起来(没有充分的理由)并且它不会破坏任何东西:if(((true)))
。
我想知道的:
我发现我无法使用括号来随意组织我的代码。
这些都有关系吗? how/when 你可以包装东西的规则是什么?这完全是为了组织的缘故,还是有时功能会发生变化(我在这里特别考虑 IIFE)?
感谢您对此的任何澄清!
有一些基本的东西,完全不同,括号是这样的:
- 在较大的表达式中分组子表达式;
- 描述一些语句语法的部分(
for
、while
等) - 描述函数调用参数
- 在函数声明中描述形式参数
因此,除了第一种情况(子表达式分组)之外,考虑如何在一般意义上使用括号是没有意义的。在那种情况下,它们就像普通代数中的括号一样工作。
在其他情况下,括号是语法的一部分,它们不是可选的。不幸的是,在 运行 代码中,如果不了解语法,就无法区分一种括号和另一种括号。所以在
someFunction(x, (y + 1), z)
y + 1
周围的括号是可选的,并且是表达式语法的一部分,而整个函数参数列表周围的括号不是可选的,因为该子表达式是函数调用所必需的。
要熟悉 JavaScript 语句语法的细节确实没有捷径可走。