


Penerokaan mendalam tentang isu kecekapan dan pengoptimuman berkaitan untuk gelung dalam kemahiran JavaScript_javascript
Pustaka Underscore.js
Berapa banyak gelung yang telah anda tulis dalam satu hari (minggu)?
var i; for(i = 0; i < someArray.length; i++) { var someThing = someArray[i]; doSomeWorkOn(someThing); }
Ia tidak berbahaya, sudah tentu, tetapi ia hodoh dan pelik dan bukan sesuatu yang mengadu. Tetapi cara penulisan ini terlalu cetek.
var i, j; for(i = 0; i < someArray.length; i++) { var someThing = someArray[i]; for(j = 0; j < someThing.stuff.length; j++) { doSomeWorkOn(someThing.stuff[j]); } }
Anda memanjangkan kod buruk, dan sebelum anda melontarkan sekumpulan ifs, anda sudah gila.
Saya tidak menulis satu gelung dalam dua tahun.
"Apa yang awak cakapkan?"
Memang betul, lawak yang teruk. Sebenarnya tidak ada (ok, saya ada menulis beberapa), kerana saya tidak menulis gelung dan kod saya lebih mudah difahami.
Bagaimana?
_.each(someArray, function(someThing) { doSomeWorkOn(someThing); })
Atau lebih baik lagi:
_.each(someArray, doSomeWorkOn);
Inilah yang dilakukan oleh underscorejs. Bersih, ringkas, boleh dibaca, pendek, tiada pembolehubah perantaraan, tiada banyak koma bertitik, ringkas dan sangat elegan.
Berikut adalah beberapa lagi contoh.
var i, result = []; for(i = 0; i < someArray.length; i++) { var someThing = someArray[i]; // 打到这,我已经手疼了 if(someThing.isAwesome === true) { result.push(someArray[i]); } }
Sekali lagi, kes penggunaan biasa untuk membuang masa menggunakan gelung. Walaupun laman web ini mempromosikan anti-merokok dan vegetarian, saya berasa marah apabila saya melihat kod ini. Lihatlah cara mudah untuk menulisnya.
var result = _.filter(someArray, function(someThing) { return someThing.isAwesome === true; })
Seperti nama penapis dalam garis bawah, hanya 3 baris kod boleh memberi anda tatasusunan baharu.
Atau adakah anda mahu menukar tatasusunan ini kepada bentuk lain?
var result = _.map(someArray, function(someThing) { return trasformTheThing(someThing); })
Tiga contoh di atas adalah mencukupi dalam kehidupan seharian, tetapi fungsi ini tidak mencukupi untuk garis bawah diletakkan di atas meja.
var grandTotal = 0, somePercentage = 1.07, severalNumbers = [33, 54, 42], i; // don't forget to hoist those indices; for(i = 0; i < severalNumbers.length; i++) { var aNumber = severalNumbers[i]; grandTotal += aNumber * somePercentage; }
versi garis bawah
var somePercentage = 1.07, severalNumbers = [33, 54, 42], grandTotal; grandTotal = _.reduce(severalNumbers, function(runningTotal, aNumber) { return runningTotal + (aNumber * somePercentage); }, 0)
Ini mungkin kelihatan agak pelik pada mulanya saya menyemak dokumentasi tentang mengurangkan dan mengetahui kewujudannya. Oleh kerana saya enggan menggunakan gelung, itu pilihan pertama saya. Perkara di atas hanyalah pengenalan Pustaka underscorejs juga mempunyai banyak fungsi yang hebat.
30 hari tiada cabaran kitaran penggunaan.
Jangan gunakan sebarang gelung untuk 30 hari seterusnya Jika anda melihat sekumpulan bahan yang jahat dan kasar, gantikannya dengan setiap gelung atau peta. Gunakan lebih sedikit pengurangan.
Anda perlu ambil perhatian bahawa Underscore ialah pintu masuk kepada pengaturcaraan berfungsi. Cara yang kelihatan, tidak kelihatan. Cara yang baik untuk pergi.
OurJS Note* Penyemak imbas moden kini menyokong setiap kaedah, menapis, memetakan dan mengurangkan kaedah, tetapi perpustakaan garis bawah boleh mencapai keserasian dengan versi lama IE Berikut ialah contoh yang ditulis menggunakan kaedah asli ES5:
[3,4,5,3,3].forEach(function(obj){ console.log(obj); }); [1,2,3,4,5].filter(function(obj){ return obj < 3 }); [9,8,5,2,3,4,5].map(function(obj){ return obj + 2; }); [1,2,3,4,5].reduce(function(pre, cur, idx, arr) { console.log(idx); //4 个循环: 2-5 return pre + cur; }); //15 //sort方法同样很有用 [9,8,5,2,3,4,5].sort(function(obj1, obj2){ return obj1 - obj2; });
untuk dalam dan untuk gelung
Seseorang menyatakan bahawa kecekapan for in adalah jauh lebih rendah daripada for gelung. Sekarang mari kita uji kecekapan penggunaan for in, for loop dan forEach dalam pelayar berbeza apabila memproses tatasusunan besar.
Pada masa ini, kebanyakan perisian sumber terbuka akan cache panjang tatasusunan dalam gelung for, kerana pandangan biasa ialah sesetengah penyemak imbas Array.length akan mengira semula panjang tatasusunan setiap kali, jadi pembolehubah sementara biasanya digunakan untuk menyimpan panjang tatasusunan terlebih dahulu, seperti:
for (var idx = 0, len = testArray.length; idx < len; idx++) { //do sth. }
Kami juga akan menguji perbezaan prestasi antara caching dan tiada caching.
Juga tambahkan operasi penjumlahan dalam setiap gelung ujian untuk menunjukkan bahawa ia bukan gelung kosong.
for (var idx = 0, len = testArray.length; idx < len; idx++) { //do sth. }
Kami juga akan menguji perbezaan prestasi antara caching dan tiada caching.
Juga tambahkan operasi penjumlahan dalam setiap gelung ujian untuk menunjukkan bahawa ia bukan gelung kosong.
Kod ujian adalah seperti berikut, klik Jalankan untuk melihat
Kod HTML
<h4 id="browser"></h4> <table id="results" class="table"></table>
Kod JavaScript
function () { //准备测试数据, 有200万条数据的大数组 var testArray = [] , testObject = {} , idx , len = 2000000 , tmp = 0 , $results = $("#results") , $browser = $("#browser") ; $browser.html(navigator.userAgent); $results.html(''); for (var i = 0; i < len; i++) { var number = Math.random(); //若希望加快运算速度可使用取整:Math.random() * 10 | 0 testArray.push(number); testObject[i] = number; } $results.append('<tr><th>测试代码</th><th>计算结果</th><th>所需时间,毫秒</th></tr>'); //测试函数 var test = function(testFunc) { var startTime , endTime , result ; startTime = new Date(); tmp = 0; testFunc(); endTime = new Date(); //计算测试用例(Test Case)运行所需要的时间 result = endTime - startTime; $results.append('<tr><td><pre class="brush:php;toolbar:false">{0}
Lari [Sila tunggu sebentar]
Keputusan ujian
Keputusan ujian mungkin berbeza-beza bergantung pada pengiraan Ini adalah ringkasan keputusan ujian Firefox, Chrome dan IE yang dijalankan pada mesin saya.
Berikut adalah beberapa kesimpulan yang diperhatikan
- Untuk in adalah lebih perlahan daripada untuk gelung, sekurang-kurangnya 20 kali lebih perlahan dalam Chrome
- FF telah dioptimumkan untukSetiap (ES5), dan prestasinya lebih baik daripada untuk gelung, tetapi prestasi Chrome/IEn adalah lemah
- Array.length caching FF/Chrome adalah lebih perlahan daripada menggunakannya secara langsung. Kecuali untuk versi terkini IE, peningkatan prestasi adalah minimum (ini sangat tidak dijangka)
- Dalam sesetengah kes, prestasi enjin JS FF nampaknya lebih baik daripada V8

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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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











Kernelsecuritycheckfailure (kegagalan pemeriksaan kernel) adalah jenis kod henti yang agak biasa Walau bagaimanapun, tidak kira apa sebabnya, ralat skrin biru menyebabkan ramai pengguna merasa tertekan dengan berhati-hati. 17 penyelesaian kepada skrin biru kernel_security_check_failure Kaedah 1: Alih keluar semua peranti luaran Apabila mana-mana peranti luaran yang anda gunakan tidak serasi dengan versi Windows anda, ralat skrin biru Kernelsecuritycheckfailure mungkin berlaku. Untuk melakukan ini, anda perlu mencabut semua peranti luaran sebelum cuba memulakan semula komputer anda.

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

Dengan perkembangan pesat kewangan Internet, pelaburan saham telah menjadi pilihan semakin ramai orang. Dalam perdagangan saham, carta lilin adalah kaedah analisis teknikal yang biasa digunakan Ia boleh menunjukkan trend perubahan harga saham dan membantu pelabur membuat keputusan yang lebih tepat. Artikel ini akan memperkenalkan kemahiran pembangunan PHP dan JS, membawa pembaca memahami cara melukis carta lilin saham dan menyediakan contoh kod khusus. 1. Memahami Carta Lilin Saham Sebelum memperkenalkan cara melukis carta lilin saham, kita perlu memahami dahulu apa itu carta lilin. Carta candlestick telah dibangunkan oleh orang Jepun

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

Hubungan antara js dan vue: 1. JS sebagai asas pembangunan Web; 2. Kebangkitan Vue.js sebagai rangka kerja hadapan 3. Hubungan pelengkap antara JS dan Vue; Vue.

Bolehkah skype Win10 dinyahpasang? Ini adalah soalan yang ingin diketahui oleh ramai pengguna, kerana ramai pengguna mendapati bahawa aplikasi ini disertakan dalam program lalai pada komputer mereka, dan mereka bimbang bahawa pemadamannya akan menjejaskan operasi sistem tapak web ini membantu pengguna Mari kita lihat dengan lebih dekat cara menyahpasang Skype for Business dalam Win10. Cara menyahpasang Skype for Business dalam Win10 1. Klik ikon Windows pada desktop komputer, dan kemudian klik ikon tetapan untuk masuk. 2. Klik "Guna". 3. Masukkan "Skype" dalam kotak carian dan klik untuk memilih hasil yang ditemui. 4. Klik "Nyahpasang". 5

Ekspresi Lambda keluar dari gelung, contoh kod khusus diperlukan Dalam pengaturcaraan, struktur gelung ialah sintaks penting yang sering digunakan. Walau bagaimanapun, dalam keadaan tertentu, kita mungkin mahu keluar daripada keseluruhan gelung apabila keadaan tertentu dipenuhi dalam badan gelung, dan bukannya menamatkan lelaran gelung semasa. Pada masa ini, ciri-ciri ungkapan lambda boleh membantu kita mencapai matlamat untuk melompat keluar dari gelung. Ungkapan Lambda ialah cara untuk mengisytiharkan fungsi tanpa nama, yang boleh mentakrifkan logik fungsi mudah secara dalaman. Ia berbeza daripada pengisytiharan fungsi biasa,

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
