function a(){
alert('A');
a = function(){
alert('B');
};
}
function a(){
alert('A');
return function(){
alert('B');
};
}
Fungsi ini menulis semula dirinya selepas dipanggil buat kali pertama, sekali gus mengelakkan pengulangan operasi yang tidak perlu setiap kali ia dipanggil. Bagaimana untuk memahami ini secara khusus? Bukankah urutan pelaksanaan fungsi sama sebelum dan selepas menulis semula fungsi?
Sebagai contoh, penyemak imbas yang berbeza mempunyai nama API yang berbeza, dan jika anda ingin merangkum antara muka bersatu, kod anda akan kelihatan seperti ini
Membezakan keadaan Boolean tanpa menggunakan pembolehubah tambahan dan tanpa menggunakan if-else.
Sebagai contoh, sesetengah gelagat mempunyai logik yang berbeza dalam situasi yang dimulakan dan yang tidak dimulakan, maka anda boleh menulis seperti ini:
Perkara buruk di sini ialah pembolehubah global diperkenalkan Kemudian pembolehubah ini boleh dikapsulkan ke dalam keadaan dalaman, yang boleh ditulis seperti ini:
Jika anda menggunakan kaedah yang disebut oleh penanya:
Selain itu, cara penulisan ini terasa sangat berfungsi (saya tidak tahu banyak tentang ungkapan berfungsi, jadi saya tidak berani bersikap mutlak). Jadi inilah masalah paradigma pengaturcaraan.
Rasakan tiga cara penulisan yang berbeza berikut:
Berorientasikan proses:
Berorientasikan objek:
Ungkapan berfungsi:
Kaedah berfungsi mempunyai banyak kelebihan Anda perlu memahami pengaturcaraan berfungsi untuk ini.
Contoh API penyemak imbas di tingkat atas ialah contoh yang baik Secara umumnya, penulisan semula fungsi lebih kepada mengelakkan operasi yang tidak perlu untuk mengoptimumkan prestasi kod
Ringkasnya
Kali pertama anda menjalankan fungsi, amaran('A') dilaksanakan dan kali kedua ia dilaksanakan, amaran('B').
Ia bukanlah untuk mengelak daripada mengulangi operasi yang tidak perlu tetapi untuk melakukan operasi tambahan. Apabila ia dijalankan buat kali pertama, ia melakukan perkara A, dan apabila ia dijalankan kemudian, ia melakukan perkara B.