Fungsi Mengembalikan Tidak Ditakrifkan dengan Penyataan Pulangan Eksplisit
Dalam senario di mana fungsi bertujuan untuk menyemak nilai dalam tatasusunan objek tetapi secara berterusan mengembalikan tidak ditentukan, adalah penting untuk memeriksa struktur fungsi dan penggunaan forEach kaedah.
Masalah timbul apabila pernyataan pemulangan diletakkan dalam fungsi panggil balik yang dihantar kepada forEach dan bukannya fungsi getByKey sebenar. Ini bermakna bahawa fungsi itu sendiri sentiasa kembali tidak ditentukan, tanpa mengira pernyataan pulangan dalam panggilan balik.
Untuk menyelesaikan isu ini, fungsi boleh ditulis semula untuk menggunakan pernyataan pulangan dengan betul:
function getByKey(key) { var found = null; data.forEach(function (val) { if (val.Key === key) { found = val; } }); return found; }
Dalam kod yang disemak ini, penyata pemulangan diletakkan dalam fungsi getByKey, memastikan fungsi itu mengembalikan sama ada objek yang ditemui atau null jika kunci tidak dijumpai.
Sebagai alternatif, gelung mudah untuk boleh digunakan untuk kecekapan yang lebih tinggi, kerana ia akan berulang ke atas elemen tatasusunan sehingga item yang dikehendaki ditemui:
function getByKey(key) { for (var i = 0; i < data.length; i++) { if (data[i].Key === key) { return data[i]; } } }
Adalah penting untuk ambil perhatian bahawa kod yang disemak mengembalikan nilai objek yang sepadan dengan kunci, dan bukannya kunci itu sendiri. Ini memberikan lebih fleksibiliti dalam mengakses data yang dikehendaki.
Atas ialah kandungan terperinci Mengapa Fungsi Saya Kembali Tidak Ditakrifkan Walaupun dengan Penyata Pulangan Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!