Rumah  >  Artikel  >  hujung hadapan web  >  Pengenalan kepada fungsi peringkat tinggi dalam kemahiran Javascript_javascript

Pengenalan kepada fungsi peringkat tinggi dalam kemahiran Javascript_javascript

WBOY
WBOYasal
2016-05-16 16:09:241224semak imbas

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.


Salin kod Kod adalah seperti berikut:
var Moqi = fungsi(p1){
This.add = fungsi (p2){
           kembali p1 ' ' p2;
};
Kembali tambah;
};

Kita boleh menggunakan fungsi ini seperti ini


Salin kod Kod adalah seperti berikut:
console.log(Moqi('Hello')('World'));

Mungkin proses ini agak mengelirukan, jadi lihat dengan lebih terperinci.

Salin kod Kod adalah seperti berikut:
> jenis Moqi('Hello')
<- "fungsi"
> Moqi('Hello')
<- fungsi (p2){
           kembali p1 ' ' p2;
}

Dalam erti kata lain, Moqi('Hello') sebenarnya adalah fungsi, Moqi('Hello')

Salin kod Kod adalah seperti berikut:
> 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:
Salin kod Kod adalah seperti berikut:

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.

Salin kod Kod adalah seperti berikut:

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
Salin kod Kod adalah seperti berikut:

// 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. .
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn