Fungsi JavaScript Kembali Tidak Ditakrifkan Apabila Pemisah Baris Berlaku Antara Pernyataan Kembali dan Objek
Dalam JavaScript, fungsi dijangka akan mengembalikan objek apabila pernyataan pemulangan diikuti terus oleh definisi objek, seperti yang dilihat dalam contoh berikut:
<code class="javascript">function foo1() { return { msg: "hello1" }; }</code>
console.log(JSON.stringify(foo1())); // Output: { msg: "hello1" }
Walau bagaimanapun, jika pemisah baris memisahkan penyataan pulangan daripada definisi objek, fungsi mengembalikan tidak ditentukan, seperti yang ditunjukkan di bawah:
<code class="javascript">function foo2() { return { msg: "hello2" }; }</code>
console.log (JSON.stringify(foo2())); // Output: undefined
Tingkah laku ini berlaku disebabkan oleh mekanisme Automatic Semicolon Insertion (ASI) dalam JavaScript. ASI mengambil koma bertitik dalam konteks tertentu untuk memastikan pelaksanaan dan tafsiran kod yang betul. Dalam kes foo2(), pemisah baris ditafsirkan sebagai koma bertitik, yang menamatkan pernyataan pulangan dan memperkenalkan pernyataan kosong sebelum definisi objek.
Penyelesaian
Untuk menyelesaikan isu ini, anda boleh menggunakan operator kumpulan untuk memastikan pernyataan pulangan dan definisi objek dinilai sebagai ungkapan tunggal. Ini menghalang ASI daripada campur tangan:
<code class="javascript">function foo2() { return ({ msg: "hello2" }); }</code>
Pertimbangan Estetik
Walaupun penting untuk mengelakkan isu ASI, anda mungkin ingin mempertimbangkan faktor estetik semasa menulis kod anda. Sesetengah pembangun lebih suka mengelompokkan ungkapan untuk kejelasan atau untuk menekankan struktur kod mereka. Contohnya:
<code class="javascript">return ([ "ul", ["li", ["span", {class: "name"}, this.name], ["span", {id: "x"}, "x"] ] ]);</code>
atau
<code class="javascript">function() { return ( doSideEffects(), console.log("this is the second side effect"), 1 + 1 ); }</code>
Dalam contoh ini, pengendali pengelompokan digunakan untuk memastikan ungkapan teratur dan untuk meningkatkan kebolehbacaan.
Atas ialah kandungan terperinci Mengapa Fungsi JavaScript Kembali Tidak Ditakrifkan Apabila Pemisah Baris Berlaku Antara Pernyataan Pemulangan dan Objek Dikembalikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!