Misalkan saya memiliki loop seperti ini:
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
Pertanyaan cepat: apakah return
menghentikan eksekusi loop itu sendiri?
javascript
loops
return
perancis
sumber
sumber
return
masih kembali dari iterasi fungsi callback saat ini, dalam cakupannya sendiri, tetapi tidak diharapkan untuk keluar dari seluruh metode pemanggilanforEach()
. Jadi itu tidak kembali dari loop itu sendiri , tetapi kembali dari callback loop dijalankan. Dalam contoh kode dari pertanyaan yang ditautkan, output1,2,4,5
dilewati3
karena pengembalian.return
akan selalu kembali darithis
konteks saat ini .break
dan kemudianreturn
.Dalam kebanyakan kasus (termasuk yang ini),
return
akan segera keluar. Namun, jika pengembalian berada ditry
blok dengan blok yang menyertainyafinally
,finally
selalu dijalankan dan dapat "menimpa"return
ditry
.sumber
The
return
pernyataan berhenti loop hanya jika itu dalam fungsi. Jika tidak, Anda akan mendapatkan kesalahan ini:sumber
Kode ini akan keluar dari loop setelah iterasi pertama dalam satu
for of
loop:kode di bawah ini akan melompat pada kondisi dan melanjutkan
for of
loop:sumber
Ya, begitu
return
pernyataan dieksekusi, seluruh fungsi keluar pada saat itu juga.Bayangkan saja apa yang akan terjadi jika tidak dan terus berulang, dan menjalankan
return
pernyataan itu setiap kali? Itu akan membatalkan arti mengembalikan nilai ketika Anda memikirkannya.sumber
Jawabannya adalah ya, jika Anda menulis kembali pernyataan kontrol segera kembali ke metode pemanggil. Dengan pengecualian pada akhirnya blok, yang dieksekusi setelah pernyataan kembali.
dan akhirnya juga dapat mengganti nilai yang telah Anda kembalikan, jika Anda kembali ke dalam akhirnya blok. LINK: Coba-tangkap-akhirnya-kembali klarifikasi
Pengembalian definisi Pernyataan sesuai:
Java Docs:
Dokumentasi MSDN:
Wikipedia:
sumber
"return" tidak keluar dari fungsi tetapi jika Anda ingin mengembalikan sejumlah besar data, Anda dapat menyimpannya dalam sebuah array dan kemudian mengembalikannya daripada mencoba mengembalikan setiap bagian data 1 per 1 dalam loop.
sumber