Var atau biarkan untuk loop javascript

Ini adalah sesuatu yang mungkin Anda semua alami dengan putaran for reguler Anda, seperti yang akan dihitung dari nol hingga sembilan

for[var i = 0; i < 10; i++] {
  console.log[i];
}

Masalah yang muncul disini adalah dua hal

Pertama-tama, jika saya mengetik i_ ke dalam konsol, ia mengembalikan 10. Kami memiliki variabel global yang telah bocor ke jendela, atau ke lingkup induk, yang bukan sesuatu yang kami inginkan. Itu hanya nilai placeholder yang perlu kita kerjakan di dalam loop ini

Kedua, mungkin Anda memiliki sesuatu yang akan berjalan setelah beberapa saat, permintaan AJAX, atau, untuk kasus ini, saya akan menandainya dengan setTimeout[] dan fungsi itu akan berjalan setelah satu detik

for[var i = 0; i < 10; i++] {
  console.log[i];
  setTimeout[function[] {
    console.log['The number is ' + i];
  },1000];
}
_

Jika kita menjalankan ini, semuanya adalah 10. Alasan kami memilikinya adalah karena,

for[var i = 0; i < 10; i++] {
  console.log[i];
  setTimeout[function[] {
    console.log['The number is ' + i];
  },1000];
}
_0 akan segera berjalan dan mereferensikan apa pun i. Itu berjalan segera pada
for[var i = 0; i < 10; i++] {
  console.log[i];
  setTimeout[function[] {
    console.log['The number is ' + i];
  },1000];
}
_2 itu sendiri

Namun, setelah satu detik, seluruh loop ini telah melalui setiap iterasi yang diperlukan dan variabel i di sini sedang ditimpa setiap saat

Masalahnya adalah pada saat setTimeout[]_ pertama berjalan, i sudah di 10, dan kami tidak memiliki cara untuk mereferensikannya

Jika Anda memiliki permintaan AJAX di mana Anda mengulangi beberapa di antaranya, tidak ada cara apa pun tanpa IFFE untuk mereferensikan apa variabel i ketika dijalankan, bukan seperti saat ini setelah pengulangan

Salah satu cara cepat untuk memperbaikinya adalah dengan mengubah

for[var i = 0; i < 10; i++] {
  console.log[i];
  setTimeout[function[] {
    console.log['The number is ' + i];
  },1000];
}
8 menjadi let

for[let i = 0; i < 10; i++] {
 console.log[i];
 setTimeout[function[] {
   console.log['The number is ' + i];
 },1000];
}

Apa yang kita ketahui tentang let? . Kami memiliki tanda kurung kurawal di loop for. Jika Anda menjalankannya sekarang, setelah satu detik kami akan mencatat nol hingga sembilan. Kami tidak mendapatkan 10, 10 kali. Kami mendapatkannya seperti yang dinyatakan setiap saat

Sebagai catatan, Anda tidak dapat menggunakan const untuk ini karena perlu ditimpa sendiri, dan Anda tidak dapat menetapkan variabel yang sama dua kali. Saat kita menggunakan let, itu akan mencakup i ke tanda kurung kurawal kita

Loop berguna, jika Anda ingin menjalankan kode yang sama berulang kali, setiap kali dengan nilai yang berbeda

Seringkali ini terjadi ketika bekerja dengan array

Alih-alih menulis

teks += mobil[0] + "
";
teks += mobil[1] + "
";
teks += mobil[2] + "
";
teks += mobil[3] + "
";
teks += mobil[4] + "
";
teks += mobil[5] + "
";

Kamu bisa menulis

untuk [misalkan i = 0; i < mobil. panjangnya;
teks += mobil[i] + "
";
}

Cobalah sendiri "

Berbagai Jenis Loop

JavaScript mendukung berbagai jenis loop

  • for_ - loop melalui blok kode beberapa kali
  • for/in_ - loop melalui properti objek
  • for/of - mengulang melalui nilai-nilai objek yang dapat diubah
  • while_ - loop melalui blok kode saat kondisi tertentu benar
  • do/while - juga mengulang blok kode saat kondisi tertentu benar

Untuk Loop

Pernyataan for membuat loop dengan 3 ekspresi opsional

for [ekspresi 1; ekspresi 2; ekspresi 3] {
// blok kode yang akan dieksekusi
}

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

Contoh

for [biarkan i = 0; i < 5; i++] {
teks += "Nomornya adalah " + i + "
";
}

Cobalah sendiri "

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 1

Biasanya 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]

Contoh

untuk [misalkan i = 0, len = mobil. panjang, teks = "";
teks += mobil[i] + "
";
}

Cobalah sendiri "

Dan Anda dapat menghilangkan ekspresi 1 [seperti saat nilai Anda ditetapkan sebelum loop dimulai]

Contoh

misalkan i = 2;
biarkan len = mobil. panjangnya;
biarkan teks = "";
untuk [; i < len; i++] {
teks += mobil[i] + "
";
}

Cobalah sendiri "

Ekspresi 2

Seringkali 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 3

Seringkali 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]

Contoh

biarkan saya = 0;
biarkan len = mobil. panjangnya;
biarkan teks = "";
untuk [; i < len; ] {
teks += mobil[i] + "
";
saya++;
}

Cobalah sendiri "

Lingkup Lingkaran

Menggunakan var dalam satu lingkaran

Contoh

var i = 5;

untuk [var i = 0; i < 10; i++] {
// beberapa kode
}

// Ini aku 10

Cobalah sendiri "

Menggunakan let dalam satu lingkaran

Contoh

misalkan i = 5;

for [biarkan i = 0; i < 10; i++] {
// beberapa kode
}

// Ini aku 5

Cobalah sendiri "

Pada contoh pertama, menggunakan var, variabel yang dideklarasikan dalam loop mendeklarasikan ulang variabel di luar loop

Dalam contoh kedua, menggunakan let, variabel yang dideklarasikan dalam loop tidak mendeklarasikan ulang variabel di luar loop

Ketika let_ digunakan untuk mendeklarasikan variabel i dalam sebuah loop, variabel i hanya akan terlihat di dalam loop

Haruskah saya menggunakan var atau membiarkan JavaScript loop?

var dan let keduanya digunakan untuk deklarasi variabel dalam javascript tetapi perbedaan di antara keduanya adalah bahwa var adalah function scoped dan let adalah block scoped . Variabel yang dideklarasikan oleh let tidak dapat dideklarasikan ulang dan harus dideklarasikan sebelum digunakan sedangkan variabel yang dideklarasikan dengan kata kunci var diangkat.

Bisakah saya menggunakan var dalam JavaScript for loop?

Gunakan var x di loop for Anda . Untuk melengkapi semua ini. jika for loop berada dalam lingkup global [mis. e. bukan dalam fungsi], maka cakupan lokal [cakupan x dideklarasikan jika Anda menggunakan var x ] sama dengan cakupan global [cakupan x secara implisit dideklarasikan jika Anda menggunakan x tanpa var], jadi keduanya .

Mengapa menggunakan let alih-alih var dalam loop?

Deskripsi. biarkan memberi Anda hak istimewa untuk mendeklarasikan variabel yang cakupannya terbatas pada blok , pernyataan ekspresi tidak seperti var. var lebih merupakan kata kunci yang mendefinisikan variabel secara global terlepas dari cakupan blok.

Bài mới nhất

Chủ Đề