Fungsi dengan forEach Returns Undefined
Kod Asal:
Kod yang disediakan mentakrifkan fungsi , getByKey, bertujuan untuk mencari tatasusunan objek untuk nilai tertentu dan mengembalikan sama ada kunci yang sepadan atau a mesej yang menunjukkan nilai tidak dapat ditemui. Walau bagaimanapun, fungsi secara konsisten mengembalikan tidak ditentukan.
function getByKey(key) { data.forEach(function (i, val) { if (data[val].Key === key) { return data[val].Key; } else { return "Couldn't find"; } }); }
Memahami Isu:
Isu dengan kod ini terletak pada skop pernyataan pulangan dalam gelung forEach . Pernyataan pulangan keluar dari gelung, bukan fungsi getByKey itu sendiri. Untuk mengembalikan nilai daripada fungsi, ia hendaklah diletakkan di luar gelung.
Penyelesaian:
Salah satu cara untuk menyelesaikannya ialah dengan menetapkan nilai pulangan kepada pembolehubah di dalam gelung dan kemudian kembalikannya daripada fungsi.
function getByKey(key) { var result; data.forEach(function (val) { if (val.Key === key) { result = val.Key; } }); return result; }
Sebagai alternatif, anda boleh menggunakan gelung biasa untuk bukannya forEach dan terus kembali daripada fungsi dalam gelung.
function getByKey(key) { for (var i = 0; i < data.length; i++) { if (data[i].Key === key) { return data[i].Key; } } }
Atas ialah kandungan terperinci Mengapa Fungsi `forEach` Saya Mengembalikan `tidak ditentukan` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!