Rumah >hujung hadapan web >tutorial js >Mengapa Pemecahan Baris Fungsi JavaScript Salah Tafsiran Titik Bertitik dan Kembalikan Ralat?
Ralat Pengembalian Fungsi JavaScript: Pecah Baris Salah Tafsiran Koma Bertitik
Dalam JavaScript, fungsi biasanya digunakan untuk mengembalikan objek yang mewakili data atau fungsi. Walau bagaimanapun, isu halus timbul apabila terdapat pemisah baris antara pernyataan pemulangan dan objek, seperti yang ditunjukkan dalam soalan ini.
Masalah:
Dalam kod yang disediakan , dua fungsi berikut menggambarkan masalah:
<code class="javascript">function foo1(){ return {msg: "hello1"}; } function foo2(){ return {msg: "hello2"}; }</code>
Memanggil foo1() seperti yang dijangkakan mengembalikan objek "{"msg":"hello1"}". Walau bagaimanapun, memanggil foo2() secara ingin tahu mengembalikan "undefined".
Sebab:
Perbezaan antara fungsi ini terletak semata-mata pada pemisah baris yang diletakkan sebelum objek dalam foo2( ). JavaScript menggunakan Sisipan Titik Bertitik Automatik (ASI) untuk menyimpulkan koma bertitik tertinggal dalam pelbagai situasi.
Dalam foo1(), disebabkan oleh ASI, koma bertitik tersirat diletakkan selepas pernyataan pulangan, memisahkannya daripada objek. Ini membolehkan fungsi mengembalikan objek dengan betul.
Walau bagaimanapun, dalam foo2(), pemisah baris meyakinkan ASI bahawa pernyataan telah lengkap sebelum mencapai objek. Akibatnya, objek ditafsirkan sebagai pernyataan yang berasingan dan tidak dikembalikan.
Penyelesaian:
Untuk menyelesaikan isu ini, sebarang pemisah baris antara pernyataan pulangan dan objek patut dielakkan. Selain itu, untuk kejelasan, sesetengah pembangun menggunakan operator pengelompokan untuk membalut objek secara eksplisit:
<code class="javascript">function foo2(){ return ({msg: "hello2"}); }</code>
Dengan melampirkan objek dalam kurungan, pengendali kumpulan memastikan ia ditafsirkan sebagai satu pernyataan, walaupun dengan pemisah baris hadir.
Atas ialah kandungan terperinci Mengapa Pemecahan Baris Fungsi JavaScript Salah Tafsiran Titik Bertitik dan Kembalikan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!