Pourquoi y a-t-il des avantages à utiliser à la fois l'opérateur de propagation et l'affectation de déstructuration dans les paramètres de fonction ?
P粉775723722
2023-08-16 16:27:57
<p>Je rencontre toujours cette syntaxe, mais j'ai du mal à comprendre ce qu'elle fait exactement : </p>
<pre class="brush:php;toolbar:false;">export class SomeClass extends SomeParent {
constructeur(...[configuration]) {
// Référence uniquement à la ligne de code "configuration"
}
}</pré>
<p>Après l'avoir essayé dans Node REPL, j'ai constaté qu'il n'y avait aucune différence entre les deux façons d'écrire suivantes : </p>
<pre class="brush:php;toolbar:false;">function foo(...[bar]) { console.log(bar); console.log(arguments) }</pre>
<p>...et...</p>
<pre class="brush:php;toolbar:false;">function foo(bar) { console.log(bar); console.log(arguments) }</pre>
<p>...Alors, qu'est-ce que ça fait ? </p>
Cela semble inutile. Vous devez demander à l'auteur du code quelles sont ses intentions à cet égard, et il devrait au moins laisser un commentaire.
Cependant, il y a en fait une légère différence : les paramètres restants ne comptent pas dans le nombre de paramètres de la fonction. Par conséquent,
(function(bar){}).length
是1
,而(function(...[bar]){}).length
是0
.