関数パラメータでスプレッド演算子と構造化代入の両方を使用することに利点があるのはなぜですか?
P粉775723722
2023-08-16 16:27:57
<p>この構文に頻繁に遭遇しますが、正確に何をしているのか理解するのに苦労しています: </p>
<pre class="brush:php;toolbar:false;">export class SomeClass extends SomeParent {
コンストラクター(...[構成]) {
// コードの「configuration」行のみを参照します
}
}</pre>
<p>Node REPL で試してみたところ、次の 2 つの書き方に違いはないことがわかりました。
<pre class="brush:php;toolbar:false;">function foo(...[bar]) { console.log(bar); console.log(arguments) }</pre>
<p>...そして...</p>
<pre class="brush:php;toolbar:false;">function foo(bar) { console.log(bar); console.log(arguments) }</pre>
<p>...それで、何をするのですか? </p>
それは無意味に思えます。この点に関してコードの作成者に意図を尋ねる必要があり、少なくともコメントを残す必要があります。
ただし、実際にはわずかな違いがあります。残りのパラメータは関数のパラメータ数にカウントされません。したがって、
(function(bar){}).length
は1
、(function(...[bar]){}).length
は0
。