Untuk memperingati 10 tahun tidak menulis blog, mari mulakan catatan blog pertama saya dengan petua yang menarik -___-
Dalam ES5, apabila kita memanggil fungsi, jika parameter yang akan dihantar dijana berdasarkan fungsi atau syarat lain, iaitu, apabila tidak pasti berapa banyak parameter yang akan dihantar, fungsi asal akan tidak diubah. Apa yang perlu kita lakukan seterusnya?
(Sudah tentu, jika anda boleh mengelakkan situasi yang diterangkan dalam artikel ini, cuba elakkannya, seperti menukar parameter kepada objek atau tatasusunan, dsb.)
Kebanyakan orang mungkin tahu bahawa memohon boleh menyelesaikan masalah ini dengan sempurna:
Terapkan, seperti panggilan, akan menggunakan parameter pertama sebagai objek panggilan fungsi, iaitu, penunjuk ini dalam fungsi panggilan ditulis semula sebagai parameter pertama Jika ia bukan kaedah objek, anda boleh mengabaikan ini dan lulus dalam tin.
Perbezaan terletak pada parameter berikut apply meletakkan semua parameter untuk dihantar ke dalam fungsi panggilan dalam tatasusunan, dan panggilan menambahkannya dalam urutan seperti fungsi asal.
Memandangkan ia adalah tatasusunan, ia boleh dikawal Menjana tatasusunan berdasarkan fungsi lain atau pertimbangan logik boleh mencapai tujuan menghantar dalam bilangan parameter yang dinamik.
Tetapi saya mengalami sakit kepala saya perlu memasukkan parameter dinamik apabila mencipta objek dengan yang baharu. Ini adalah masalah yang saya hadapi sekali setiap beberapa tahun:
Jika anda menggunakan ES6 dan mempunyai parameter selebihnya, tiada masalah di atas akan menjadi masalah. Ambil perhatian bahawa menambah tiga titik di hadapan args tatasusunan bukanlah ralat sintaks, tetapi kaedah penulisan parameter selebihnya yang disediakan oleh ES6 Anda boleh memahaminya sebagai menggantikan...args dengan aksara selepas mengalih keluar kurungan segi empat sama dalam tatasusunan args.
Tetapi adakah benar-benar tiada cara untuk mencapainya dalam ES5? Lagipun, kebanyakan ES6 adalah gula sintaksis dan boleh disusun menjadi ES5 menggunakan alat seperti babel Jika anda mempunyai sebarang soalan, mari kita susun dengan babel dan lihat apa yang kami dapat:
Anda terkejut apabila anda melihat baris terakhir, jangan takut, mari kami menganalisis kod ini. Mula-mula, mari kita membedahnya dan melihatnya dalam tiga langkah:
1. Tidak syak lagi bahawa menggunakan concat untuk menyambung null dan parameter kami ke dalam tatasusunan, sebagai parameter kedua permohonan, kami mendapat [null, 1, 2, 3];