Rumah >hujung hadapan web >tutorial js >Mengapa Fungsi Saya Kembali Tidak Ditakrifkan Walaupun dengan Penyata Pulangan Eksplisit?

Mengapa Fungsi Saya Kembali Tidak Ditakrifkan Walaupun dengan Penyata Pulangan Eksplisit?

DDD
DDDasal
2024-11-10 11:15:02255semak imbas

Why Does My Function Return Undefined Even with an Explicit Return Statement?

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!

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