Warum bietet die Verwendung sowohl des Spread-Operators als auch der destrukturierenden Zuweisung in Funktionsparametern Vorteile?
P粉775723722
2023-08-16 16:27:57
<p>Ich stoße immer wieder auf diese Syntax, aber ich habe Probleme zu verstehen, was genau sie bewirkt: </p>
<pre class="brush:php;toolbar:false;">export class SomeClass erweitert SomeParent {
Konstruktor(...[Konfiguration]) {
// Verweisen Sie nur auf die Codezeile „configuration“.
}
}</pre>
<p>Nachdem ich es in Node REPL ausprobiert hatte, stellte ich fest, dass es keinen Unterschied zwischen den folgenden beiden Schreibweisen gibt: </p>
<pre class="brush:php;toolbar:false;">function foo(...[bar]) { console.log(bar(arguments) }</pre>
<p>...und...</p>
<pre class="brush:php;toolbar:false;">function foo(bar) { console.log(bar) }</pre>
<p>...Was macht es also? </p>
看起来确实毫无意义。您需要询问代码的作者他们在这方面的意图,他们至少应该留下一个注释。
然而,实际上存在微小的差异:剩余参数不计入函数的参数个数。因此,
(function(bar){}).length
是1
,而(function(...[bar]){}).length
是0
。