Mengapakah terdapat kelebihan menggunakan kedua-dua pengendali hamparan dan tugasan pemusnahan dalam parameter fungsi?
P粉775723722
2023-08-16 16:27:57
<p>Saya terus menemui sintaks ini, tetapi saya menghadapi masalah memahami apa sebenarnya yang dilakukannya: </p>
<pre class="brush:php;toolbar:false;">kelas eksport SomeClass memanjangkan SomeParent {
pembina(...[konfigurasi]) {
// Hanya rujuk baris "konfigurasi" kod
}
}</pre>
<p>Selepas mencubanya dalam Node REPL, saya mendapati bahawa tiada perbezaan antara dua cara penulisan berikut: </p>
<pre class="brush:php;toolbar:false;">function foo(...[bar]) { console.log(bar);
<p>...dan...</p>
<pre class="brush:php;toolbar:false;">function foo(bar) { console.log(bar);console.log(arguments) }</pre>
<p>...Jadi apa fungsinya? </p>
Nampak tak guna. Anda perlu bertanya kepada pengarang kod apakah niat mereka dalam hal ini, dan mereka sekurang-kurangnya harus meninggalkan komen.
Namun, sebenarnya terdapat sedikit perbezaan: parameter selebihnya tidak dikira dalam bilangan parameter fungsi. Oleh itu,
(function(bar){}).length
是1
,而(function(...[bar]){}).length
是0
.