Ini adalah perkara yang menarik, yang mungkin juga menggambarkan kuasa objek Javascript. Apa yang perlu kita lakukan ialah mengeluarkan Hello, World seperti yang dinyatakan dalam artikel sebelumnya , dan inputnya ialah print('Hello')('World'), dan ini adalah apa yang dipanggil fungsi peringkat tinggi.
Fungsi tertib lebih tinggi
Tahap tinggi kelihatan seperti istilah esoterik untuk teknik pengaturcaraan lanjutan, dan saya fikir begitu apabila saya mula-mula melihatnya.
Fungsi tertib tinggi Javascript
Walau bagaimanapun, fungsi tertib lebih tinggi hanyalah fungsi yang mengambil fungsi sebagai parameter atau nilai pulangan. Ambil Hello, World di atas sebagai contoh mudah.
var Moqi = fungsi(p1){
This.add = fungsi (p2){
kembali p1 ' ' p2;
};
Kembali tambah;
};
Kita boleh menggunakan fungsi ini seperti ini
console.log(Moqi('Hello')('World'));
Mungkin proses ini agak mengelirukan, jadi lihat dengan lebih terperinci.
> jenis Moqi('Hello')
<- "fungsi"
> Moqi('Hello')
<- fungsi (p2){
kembali p1 ' ' p2;
}
Dalam erti kata lain, Moqi('Hello') sebenarnya adalah fungsi, Moqi('Hello')
> var m = Moqi('Hello')
> m('Dunia')
> "Hello, Dunia"
Daripada situasi di atas, fungsi peringkat tinggi boleh menjadikan kod lebih ringkas dan cekap. Sememangnya kita juga boleh mencipta fungsi supaya:
> Moqi('Hello')('World')('Phodal')
> "Hello, World Phodal"
Jadi ada fungsi seperti itu
var Moqi = fungsi(p1){
Fungsi kembali (p2){
fungsi kembali (p3){
kembali p1 ',' p2 ' ' p3;
}
};
};
Pulihkan fungsi tertib lebih tinggi
Ia menjadi semakin kompleks, dan isyarat bahawa abstraksi fungsi peringkat tinggi perlu diperkenalkan ialah berlakunya kod berulang atau serupa. Kemudian, kita kembalikan kepada fungsi sebelumnya langkah demi langkah:
var Moqi = fungsi(p1){
This.add = fungsi (p2){
fungsi kembali (p3){
kembali p1 ',' p2 ' ' p3;
}
};
Kembalikan ini.tambah;
};
Kemudian buat fungsi baharu
Salin kod Kod adalah seperti berikut:
var Moqi = fungsi(p1){
This.add = fungsi (p2){
This.add1 = function(p3){
kembali p1 ',' p2 ' ' p3;
};
kembalikan ini. tambah1;
};
Kembalikan ini.tambah;
};
Menggunakan kaedah panggilan dalam javascript, akan ada:
var Moqi = fungsi(p1){
var diri = ini;
fungsi fd(p2) {
This.add1 = fungsi (p3) {
kembali p1 ',' p2 ' ' p3;
};
}
self.add = fungsi (p2){
fd.call(ini, p2);
kembalikan ini. tambah1;
};
Kembalikan diri.tambah;
};
Contoh fungsi tertib lebih tinggi
Contoh di atas hanya untuk keseronokan, contoh berikut adalah untuk aplikasi sebenar.
tambah = fungsi(a,b){
Kembalikan b;
};
fungsi matematik(func,array){
Kembalikan func(array[0],array[1]);
}
console.log(math(tambah,[1,2]));
> matematik(tambah,[1,2])
<3
Dalam contoh di atas, tambah yang diluluskan adalah parameter, dan apabila dikembalikan, ia hanyalah fungsi. Sebagai contoh, terdapat fungsi dalam jQuery untuk
// Tukar putus-putus kepada camelCase yang digunakan oleh modul css dan data
// Microsoft terlupa untuk memasukkan awalan vendor mereka (#9572)
camelCase: function( string ) {
Kembalikan string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},
Ia juga digunakan dengan cara ini, yang menunjukkan betapa pentingnya fungsi tertib tinggi untuk menguasai JS dengan baik. .