Loop berguna, jika Anda ingin menjalankan kode yang sama berulang kali, setiap kali dengan nilai yang berbeda Show
Seringkali ini terjadi ketika bekerja dengan array Alih-alih menulisteks += mobil[0] + " Kamu bisa menulisuntuk (misalkan i = 0; i < mobil. panjangnya; Berbagai Jenis LoopJavaScript mendukung berbagai jenis loop
Untuk LoopPernyataan for (ekspresi 1; ekspresi 2; ekspresi 3) { Ekspresi 1 dieksekusi (satu kali) sebelum eksekusi blok kode Ekspresi 2 mendefinisikan kondisi untuk mengeksekusi blok kode Ekspresi 3 dijalankan (setiap kali) setelah blok kode dieksekusi Contohfor (biarkan i = 0; i < 5; i++) { Dari contoh di atas, Anda bisa membaca Ekspresi 1 menyetel variabel sebelum perulangan dimulai (misalkan i = 0) Ekspresi 2 mendefinisikan kondisi untuk menjalankan loop (saya harus kurang dari 5) Ekspresi 3 meningkatkan nilai (i++) setiap kali blok kode dalam loop telah dieksekusi Ekspresi 1Biasanya Anda akan menggunakan ekspresi 1 untuk menginisialisasi variabel yang digunakan dalam loop (misalkan i = 0) Ini tidak selalu terjadi. JavaScript tidak peduli. Ekspresi 1 adalah opsional Anda dapat memulai banyak nilai dalam ekspresi 1 (dipisahkan dengan koma) Contohuntuk (misalkan i = 0, len = mobil. panjang, teks = ""; Dan Anda dapat menghilangkan ekspresi 1 (seperti saat nilai Anda ditetapkan sebelum loop dimulai) Contohmisalkan i = 2; Ekspresi 2Seringkali ekspresi 2 digunakan untuk mengevaluasi kondisi variabel awal Ini tidak selalu terjadi. JavaScript tidak peduli. Ekspresi 2 juga opsional Jika ekspresi 2 mengembalikan true, pengulangan akan dimulai lagi. Jika mengembalikan false, loop akan berakhir Jika Anda menghilangkan ekspresi 2, Anda harus memberikan jeda di dalam loop. Jika tidak, loop tidak akan pernah berakhir. Ini akan merusak browser Anda. Baca tentang istirahat di bab selanjutnya dari tutorial ini Ekspresi 3Seringkali ekspresi 3 menambah nilai variabel awal Ini tidak selalu terjadi. JavaScript tidak peduli. Ekspresi 3 adalah opsional Ekspresi 3 dapat melakukan apa saja seperti kenaikan negatif (i--), kenaikan positif (i = i + 15), atau yang lainnya Ekspresi 3 juga dapat dihilangkan (seperti saat Anda menaikkan nilai di dalam loop) Contohbiarkan saya = 0; Lingkup LingkaranMenggunakan Contohvar i = 5; untuk (var i = 0; i < 10; i++) { // Ini aku 10 Cobalah sendiri "Menggunakan Contohmisalkan i = 5; for (biarkan i = 0; i < 10; i++) { // Ini aku 5 Cobalah sendiri "Pada contoh pertama, menggunakan Dalam contoh kedua, menggunakan Ketika Apakah Anda tahu JSLint? . Siapa bapak JavaScript, dia pasti memiliki latar belakang yang cukup untuk menilai. . ) Dan JSLint sangat ketat, dan kadang-kadang Anda bisa menyebutnya kaku, tetapi dia selalu benar. Jika Anda pernah menggunakan alat ini sebelumnya, Anda mungkin melihat beberapa kesalahan, salah satunya mungkin terlihat seperti ini. “Jangan membuat fungsi dalam satu lingkaran”. Oke, mari kita perbaiki, tunggu, apa? Ya, mungkin terdengar absurd pada awalnya, mari selami untuk mengetahui apa yang ingin dikatakan sang ayah xD 1. Kode anehJika Anda telah mengikuti saya di sini dari artikel ini Apa itu penutupan dalam JavaScript dan mengapa itu salah. Anda mungkin masih penasaran dengan kode berikut. Dan jika Anda tidak tahu penutupan, Anda harus memeriksa artikel itu terlebih dahulu 1 var funcs = []; Kode sederhana, buat loop terlebih dahulu, untuk setiap loop, tetapkan nilai saat ini var funcs = [];4 ke fungsi yang baru dibuat. Kemudian mulai loop baru, jalankan fungsi satu per satu, sesuatu akan ditampilkan ke konsol Ini adalah hasil yang mungkin Anda harapkan 1 My value: 0 Tetapi sebaliknya, itu akan menghasilkan seperti ini 1 My value: 3 Dan sebelum Anda menjalankan kode ini, Tuan Douglas telah memperingatkan Anda, ""Jangan membuat fungsi dalam satu lingkaran"". Ya, dia benar, tetapi mengapa? 2. Bedah misterinyaIni sederhana karena, dalam fungsi anonim yang dibuat dalam loop, Anda telah merujuk variabel yang termasuk dalam lingkup luar, jadi lain kali saat Anda menjalankan fungsi ini, variabel var funcs = [];4 adalah 3. Anda akan bertanya, apa? 1 var i = 0, Anda tahu var funcs = [];6 dan var funcs = [];7 dalam JavaScript, bukan? . Jadi, inilah alasan mengapa var funcs = [];_4 muncul di blok pertama. Dan inilah yang terjadi selanjutnya
3. Bagaimana mengatasinya?Karena kita tahu penyebabnya, kita bisa mengatasinya sekarang, dengan menggunakan konsep yang sama 3. 1 Saya suka fungsi dan saya akan membuatnya dengan biaya berapa punAnda mungkin berpikir bahwa karena var funcs = [];_4 adalah nilai primitif, kita dapat dengan sederhana mendeklarasikan variabel baru di dalam fungsi itu dalam lingkaran dan menugaskan var funcs = [];4 ke dalamnya. Sesuatu seperti 1 for (i = 0; i < 3; i++) { Itu tidak akan berhasil, tetap memberimu tiga My value: 01 Alasannya masih seperti sebelumnya
Jadi, salah satu cara untuk mengatasi ini adalah dengan membuat penutupan lain untuk menyimpan nilai sementara tersebut. Jadi itu membawa kita ke kode berikut var funcs = [];0 var funcs = [];1 Kita mendapatkan apa yang kita inginkan 1 My value: 0 Apa yang telah kita lakukan? 3. 2 Apakah ayah bahagia?OK, jika Anda menggunakan JSHint, sebagian besar bagus, tetapi jika Anda menggunakan JSLint, masih ada beberapa keluhan, saya katakan sebelumnya, My value: 05, beberapa keluhan mungkin terlihat sangat aneh seperti My value: 06, ya, maksudnya saat Anda membuatnya untuk loop . ?. ?. Ya, ayah berpikir Anda harus menggunakan My value: 0_8… Oke, lebih banyak dari ini di luar topik 4. AkhirnyaSekarang Anda tahu mengapa tidak membuat fungsi dalam satu lingkaran
|