Menyelesaikan Masalah Pulangan Tidak Ditakrifkan dalam Fungsi Menggunakan forEach
Fungsi tertentu, apabila digunakan dengan kaedah forEach, mungkin kembali tidak ditentukan walaupun disertakan pulangan kenyataan. Tingkah laku ini berlaku kerana penyataan pemulangan mempengaruhi fungsi lelaran yang dihantar kepada forEach, dan bukannya fungsi melampirkan itu sendiri.
Kod Contoh:
Pertimbangkan fungsi berikut:
def get_by_key(key): data.forEach(function(i, val): if data[val].Key == key: return data[val].Key else: return "Couldn't find" )
Apabila anda memanggil fungsi ini, anda mungkin mengharapkan ia mengembalikan nilai kunci dalam tatasusunan data, tetapi ia secara konsisten pulangan tidak ditentukan. Ini kerana penyataan pulangan berada di dalam fungsi lelaran, yang tidak menjejaskan nilai pulangan get_by_key.
Penyelesaian:
Terdapat dua cara utama untuk menangani isu ini:
1. Menggunakan Penutupan:
def get_by_key(key): found = None data.forEach(function(val): if val.Key == key: found = val ) return found
Dalam penyelesaian ini, kami mencipta penutupan dengan mengisytiharkan pembolehubah yang ditemui di luar fungsi lelaran. Ini membolehkan kami mengembalikan nilai tanpa menjejaskan fungsi lelaran.
2. Menggunakan untuk Gelung:
def get_by_key(key): for i in range(len(data)): if data[i].Key == key: return data[i]
Untuk set data yang lebih kecil, gelung untuk mudah boleh menjadi lebih cekap daripada menggunakan forEach. Ia berulang melalui tatasusunan data dan mengembalikan nilai yang ditemui.
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Mengapakah `forEach` Mengembalikan `undefined` Walaupun Dengan Pernyataan `return` Di Dalam Fungsi Lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!