Rumah >hujung hadapan web >tutorial js >Mengapa `kembali` Tidak Memecahkan Gelung `forEach` dalam JavaScript?

Mengapa `kembali` Tidak Memecahkan Gelung `forEach` dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 18:24:12853semak imbas

Why Doesn't `return` Break a `forEach` Loop in JavaScript?

Memahami Gelagat pengembalian Di Dalam untukSetiap Fungsi

Selalunya dalam JavaScript, terdapat salah tanggapan tentang kelakuan kata kunci pulangan dalam fungsi forEach . Artikel ini bertujuan untuk menjelaskan penggunaan yang dimaksudkan.

Pertimbangkan coretan kod berikut:

$('button').click(function () {
  [1, 2, 3, 4, 5].forEach(function (n) {
    if (n == 3) {
      // It should break out here and doesn't alert anything after
      return false;
    }
    alert(n);
  });
});

Dalam kod ini, penyataan pemulangan digunakan dalam gelung forEach untuk menghentikan lelaran lebih awal. Walau bagaimanapun, kod itu masih meneruskan untuk memberi amaran kepada elemen seterusnya dalam tatasusunan. Mengapa ini berlaku?

Sifat Sebenar pulangan dalam forEach

Bertentangan dengan kepercayaan popular, pernyataan pulangan dalam fungsi forEach mempunyai makna yang berbeza daripada yang berlaku dalam binaan gelung seperti untuk atau sementara. Dalam forEach, return tidak menandakan penamatan awal gelung.

Penjelasan Rangkaian Pembangun Mozilla

Menurut dokumentasi rasmi Mozilla Developer Network:

"Tiada cara untuk menghentikan atau memecahkan gelung forEach() selain dengan melemparkan pengecualian. Jika anda memerlukan sedemikian tingkah laku, kaedah forEach() ialah alat yang salah."

Pendekatan Alternatif

Jika matlamat anda adalah untuk menghentikan lelaran gelung secara bersyarat, terdapat alternatif kaedah yang tersedia:

  • Gelung Mudah: Cipta gelung tradisional untuk atau semasa dengan syarat eksplisit untuk penamatan awal.
  • untuk...gelung: Gunakan gelung for...of, yang menyediakan keupayaan penamatan segera dengan pernyataan putus.
  • Array.prototype.every(): Gunakan kaedah every(), yang membolehkan anda menggunakan predikat pada setiap elemen dan memecahkan gelung awal jika predikat mengembalikan palsu untuk mana-mana elemen.
  • Kaedah Tatasusunan Lain: Kaedah lain seperti some(), find(), dan findIndex() juga menawarkan cara untuk mengganggu berdasarkan gelung pada kriteria tertentu.

Atas ialah kandungan terperinci Mengapa `kembali` Tidak Memecahkan Gelung `forEach` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn