Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Fungsi `forEach` Saya Mengembalikan `tidak ditentukan` dalam JavaScript?

Mengapa Fungsi `forEach` Saya Mengembalikan `tidak ditentukan` dalam JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-11-11 17:06:031019semak imbas

Why Does My `forEach` Function Return `undefined` in JavaScript?

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!

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