Hari ini saya melihat pertanyaan tes yang mengimplementasikan fungsi tata bahasa berikut:
var a = add (2) (3) (4); // 9
Ini adalah penerapan fungsi tingkat tinggi. Analisis: Tambah (2) akan mengembalikan fungsi, tambahkan (2) (3) juga akan mengembalikan fungsi, dan akhirnya tambahkan (2) (3) (4) akan mengembalikan nilai numerik.
menyelesaikan:
fungsi add (num1) {return function (num2) {return function (num3) {return num1+num2+num3;}}} add (2) (3) (4); // 9Tidak ada yang salah dengan ini, itu bisa menyelesaikan masalah dengan sempurna.
Optimalisasi: Hanya bagian tentang fungsi tingkat tinggi yang dibahas di sini. Untuk solusi yang lebih baik, panggilan tak terbatas dapat diimplementasikan.
// metode 1 fungsi add (a) {var temp = function (b) {return add (a + b);} temp.valueof = temp.tostring = function () {return a;}; return temp;} add (2) (3) (4) (5); // 14 // MODOD 2. MODOK TAMBAHAN (2) (4) (5); // 14 // MODOD 2. MODOK ADDIRE (2) (4) (5); // 14 // MODOD 2. MODOK ADDOR (2) (4) (5); // 14 // MODOD 2. = num; return add;} add.valueof = add.toString = function () {return add.num}; var a = add (3) (4) (5) (6); // 18 // Metode 2 Komentar: Faktanya, setara dengan, tetapi atribut khusus diterapkan pada fungsi untuk menyimpan nilainya. ; (function () {var sum = 0; function add (num) {sum+= num; return add;} add.valueof = add.toString = function () {return sum;} window.add = add;}) () var a = add (3) (4) (5) (6) (6); // 18 [/kode]Inilah yang saya tulis dalam artikel yang saya lihat di [url = http: //www.cnblogs.com/wengxuesong/p/5577683.html] kebun blog [/url]. Saya tidak pernah memahami metode satu dan metode dua, dan saya juga mencoba untuk mengeluarkan fungsi [kode = javascript, javascript, true] fungsi 9 di konsol
var temp = function () {} temp.valueof = function () {return 2;} temp.toString = function () {return 'hahh';} waspada (temp); console.log (2 * temp);Ketika perlu dikonversi ke string, tostring akan dipanggil, dan nilai akan dipanggil ketika perlu dikonversi ke angka.