


Contoh pengaturcaraan fungsi JavaScript kemahiran analisis_javascript
Contoh dalam artikel ini menerangkan pengaturcaraan berfungsi javascript. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:
JS, seperti bahasa dinamik lain, boleh menulis fungsi tertib tinggi Apa yang dipanggil fungsi tertib tinggi ialah fungsi yang boleh mengendalikan fungsi. Kerana dalam js fungsi adalah objek lengkap dan tergolong dalam kelas pertama warganegara, yang menyediakan prasyarat untuk pengaturcaraan berfungsi.
Berikut ialah contoh kod daripada tutorial js Fungsinya adalah untuk mengira purata dan sisihan piawai elemen tatasusunan Mula-mula, mari kita senaraikan cara menulis pengaturcaraan tidak berfungsi:
var data = [1,1,3,5,5]; var total = 0; for(var i = 0;i < data.length;i++) total += data[i]; var mean = tatal/data.length; //平均数为3 //计算标准差 total = 0; for(var i = 0;i < data.length;i++){ var deviation = data[i] - mean; tatal += deviation * deviation; } var stddev = Math,.sqrt(total/(data.length-1));//标准差为2
Untuk menggunakan pengaturcaraan berfungsi, kami mentakrifkan beberapa fungsi pembantu:
//将类数组对象转换为真正的数组 function array(a,n){ return Array.prototype.slice.call(a,n||0); } //将函数实参传递至左侧 function partial_left(f){ var args = arguments; return function(){ var a = array(args,1); a = a.concat(array(arguments)); return f.apply(this,a); }; } //将函数的实参传递至右侧 function partial_right(f){ var args = arguments; return function(){ var a = array(arguments); a = a.concat(array(args,1)); return f.apply(this,a); }; } //该函数实参被用做模版, //实参列表中的undefined值会被实际实参值填充。 function partial(f){ var args = arguments; return function(){ var a = array(args,1); var i = 0,j = 0; for(;i<a.length;i++) if(a[i] === undefined) a[i] = arguments[j++]; a = a.concat(array(arguments,j)); return f.apply(this,a); }; } //返回一个函数类似于f(g()) function compose(f,g){ return function(){ return f.call(this,g.apply(this,arguments)); }; }
Di bawah kami memberikan kod js sepenuhnya menggunakan pengaturcaraan berfungsi:
var data = [1,1,3,5,5]; var sum = function(x,y){return x+y;}; var product = function(x,y){return x*y;}; var neg = partial(product,-1); var square = partial(Math.pow,undefined,2); var sqrt = partial(Math.pow,undefined,0.5); var reciprocal = partial(Math.pow,undefined,-1); //好吧,高潮来鸟 :) var mean = product(reduce(data,sum),reciprocal(data.length)); var stddev = sqrt(product(reduce(map(data,compose(square,partial(sum,neg(mean)))),sum),reciprocal(sum(data.length,-1))));
Kecuali untuk fungsi pengurangan dan peta, fungsi lain diberikan di atas. Fungsi pengurangan adalah serupa dengan fungsi suntikan dalam ruby:
ary = (1..10).to_a ary.inject(0) {|sum,i|sum + i} //结果为55
js ditulis seperti berikut:
var ary = [1,2,3,4,5,6,7,8,9,10] ary.reduce(function(sum,i){ return sum + i; },0);
0 ialah nilai awal jumlah Jika diabaikan, jumlah ialah nilai elemen pertama tatasusunan Ia boleh diabaikan di sini.
Fungsi peta juga sangat mudah. Ia serupa dengan operasi pada setiap elemen tatasusunan dan kemudian mengembalikan tatasusunan selepas operasi Ambil kod js adalah serupa dengan ini:
a = (1..3).to_a; #数组[1,2,3] a.map {|x| x*2} #返回新数组[2,4,6]
Mari kita analisa rentetan kod yang panjang itu:)
jumlah dan produk mentakrifkan fungsi untuk menambah dan mendarab unsur
neg juga merupakan fungsi yang setara dengan: produk(-1,x), yang bermaksud nilai x negatif;
Fungsi segi empat sama adalah bersamaan dengan: Math.pow(x,2), yang mengira nilai kuasa dua bagi x Ambil perhatian bahawa parameter kedua separa di sini tidak ditentukan, yang bermaksud bahawa parameter formal di sini akan digantikan dengan parameter sebenar pertama.Fungsi sqrt adalah serupa dengan kuasa dua, dan fungsinya bersamaan dengan: Math.pow(x,0.5), yang bersamaan dengan mengira punca kuasa dua bagi x.
Salingan fungsi terakhir tidak sukar Ia bersamaan dengan: Math.pow(x,-1), iaitu, mengira kuasa negatif x, yang bersamaan dengan mengira salingan x.
Mari kita lihat pengiraan purata dahulu Ia sangat mudah: mula-mula hitung jumlah elemen tatasusunan dan kemudian darabkannya dengan salingan panjang tatasusunan, iaitu jumlah tatasusunan/panjang tatasusunan.
Akhir sekali, melihat sisihan piawai yang kelihatan sukar, lebih baik kita melihat dari dalam ke luar:
Mula-mula lihat lapisan yang mengandungi neg:
//等价于函数sum(-1 * mean + x) partial(sum,neg(mean)
//下面在源代码上做了等价替换,可以再次等价于: //square(sum(-1*mean + x)),再次展开(我剥,我剥,我剥洋葱...): //Math.pow(sum(-1*mean + x),2); compose(square,sum(-1*mean + x))
//Ia sangat jelas! ? Iaitu, setiap elemen dalam data adalah purata dan kemudian naikkan hasilnya kepada kuasa 2.
map(data,Math.pow(sum(-1*mean + x),2))
//将前面新数组的每个元素值加起来。 reduce(map(...),sum)
//等价于求(data.length-1)的倒数 reciprocal(sum(data.length,-1))
//等价于新数组元素的和除以(data.length-1) product(reduce(...),reciprocal(...))
Penjelasan telah berakhir, perjuangan telah berakhir, dan anda telah selesai.
Saya harap artikel ini akan membantu reka bentuk pengaturcaraan JavaScript semua orang.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

ungkapan pythonLambda ialah alat yang berkuasa dan fleksibel untuk mencipta kod yang ringkas, boleh dibaca dan mudah digunakan. Ia bagus untuk mencipta fungsi tanpa nama dengan cepat yang boleh dihantar sebagai hujah kepada fungsi lain atau disimpan dalam pembolehubah. Sintaks asas ungkapan Lambda adalah seperti berikut: lambdaarguments:expression Contohnya, ungkapan Lambda berikut menambah dua nombor: lambdax,y:x+y Ungkapan Lambda ini boleh dihantar ke fungsi lain sebagai argumen seperti berikut: defsum( x ,y):returnx+yresult=sum(lambdax,y:x+y,1,2)Dalam contoh ini

Pengenalan kepada kaedah mendapatkan kod status HTTP dalam JavaScript: Dalam pembangunan bahagian hadapan, kita selalunya perlu berurusan dengan interaksi dengan antara muka bahagian belakang, dan kod status HTTP adalah bahagian yang sangat penting daripadanya. Memahami dan mendapatkan kod status HTTP membantu kami mengendalikan data yang dikembalikan oleh antara muka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan memberikan contoh kod khusus. 1. Apakah kod status HTTP bermakna kod status HTTP apabila penyemak imbas memulakan permintaan kepada pelayan, perkhidmatan tersebut

Ekspresi lambda C++ membawa kelebihan kepada pengaturcaraan berfungsi, termasuk: Kesederhanaan: Fungsi sebaris tanpa nama meningkatkan kebolehbacaan kod. Penggunaan semula kod: Ungkapan Lambda boleh dihantar atau disimpan untuk memudahkan penggunaan semula kod. Enkapsulasi: Menyediakan cara untuk merangkum sekeping kod tanpa mencipta fungsi berasingan. Kes praktikal: menapis nombor ganjil dalam senarai. Kira jumlah unsur dalam senarai. Ekspresi Lambda mencapai kesederhanaan, kebolehgunaan semula dan enkapsulasi pengaturcaraan berfungsi.

Terdapat lima kesilapan dan perangkap biasa yang perlu diberi perhatian apabila menggunakan pengaturcaraan berfungsi dalam Go: Elakkan pengubahsuaian rujukan secara tidak sengaja dan pastikan pembolehubah yang baru dicipta dikembalikan. Untuk menyelesaikan isu konkurensi, gunakan mekanisme penyegerakan atau elakkan daripada menangkap keadaan boleh ubah luaran. Gunakan kefungsian separa dengan berhati-hati untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Sentiasa mengendalikan ralat dalam fungsi untuk memastikan keteguhan aplikasi anda. Pertimbangkan kesan prestasi dan optimumkan kod anda menggunakan fungsi sebaris, struktur data yang diratakan dan kumpulan operasi.

Kelebihan pengaturcaraan fungsi Java termasuk kesederhanaan, kebolehkomposisian, konkurensi, kemesraan ujian dan prestasi. Kelemahan termasuk keluk pembelajaran, kesukaran dalam penyahpepijatan, fleksibiliti terhad dan overhed prestasi. Ciri utamanya termasuk fungsi tulen tanpa kesan sampingan, saluran paip pemprosesan data, kod tanpa kewarganegaraan dan API penstriman yang cekap.

Ungkapan Lambda dalam python ialah satu lagi bentuk sintaks bagi fungsi tanpa nama. Ia adalah fungsi kecil tanpa nama yang boleh ditakrifkan di mana-mana dalam program. Ungkapan lambda terdiri daripada senarai parameter dan ungkapan, yang boleh berupa sebarang ungkapan Python yang sah. Sintaks ungkapan Lambda adalah seperti berikut: lambdaargument_list:expression Sebagai contoh, ungkapan Lambda berikut mengembalikan jumlah dua nombor: lambdax,y:x+y ini boleh dihantar ke fungsi lain, seperti peta () fungsi: nombor=[ 1,2,3,4,5]hasil=peta(lambda

Penilaian malas boleh dilaksanakan dalam Go dengan menggunakan struktur data malas: mencipta jenis pembalut yang merangkum nilai sebenar dan hanya menilainya apabila diperlukan. Optimumkan pengiraan jujukan Fibonacci dalam program berfungsi, menangguhkan pengiraan nilai perantaraan sehingga benar-benar diperlukan. Ini boleh menghapuskan overhed yang tidak perlu dan meningkatkan prestasi program berfungsi.
