Rumah >hujung hadapan web >tutorial js >Mengapa Beberapa Fungsi Anak Panah JavaScript Kembali `tidak ditentukan`?

Mengapa Beberapa Fungsi Anak Panah JavaScript Kembali `tidak ditentukan`?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 08:36:10352semak imbas

Why Do Some JavaScript Arrow Functions Return `undefined`?

Fungsi Anak Panah dan Pernyataan Pulangan Eksplisit

Dalam JavaScript, fungsi anak panah menyediakan sintaks ringkas untuk mentakrifkan fungsi. Walau bagaimanapun, perangkap biasa menghadapi nilai yang tidak ditentukan apabila memanggil fungsi anak panah yang menggunakan badan blok.

Pertimbangkan fungsi anak panah berikut:

const f = arg => { arg.toUpperCase(); };

Walaupun fungsi ini mungkin kelihatan logik, ia kembali tidak ditentukan apabila dipanggil. Untuk memahami sebabnya, kita perlu meneliti semantik fungsi anak panah.

Apabila menggunakan badan blok (dengan pendakap kerinting) dalam fungsi anak panah, tingkah laku pulangan tersirat berbeza daripada badan ringkas (tanpa pendakap kerinting). Dalam versi badan blok, nilai yang dikembalikan oleh fungsi mesti dinyatakan secara eksplisit menggunakan kata kunci pulangan.

const f = arg => { return arg.toUpperCase(); };

Dengan pernyataan pulangan eksplisit ini, fungsi mengembalikan nilai yang dijangkakan dengan betul: "UJIAN".

Sebagai alternatif, anda boleh menggunakan sintaks isi ringkas untuk mencapai hasil yang sama secara tersirat:

const f = arg => arg.toUpperCase();

Dalam kes ini, ungkapan terakhir dalam badan, arg.toUpperCase(), dikembalikan secara automatik oleh fungsi anak panah.

Oleh itu, untuk mengelakkan nilai yang tidak ditentukan semasa memanggil anak panah berfungsi dengan badan blok, sentiasa nyatakan nilai pulangan dengan jelas menggunakan kata kunci pulangan atau gunakan sintaks isi ringkas.

Atas ialah kandungan terperinci Mengapa Beberapa Fungsi Anak Panah JavaScript Kembali `tidak ditentukan`?. 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