Rumah >hujung hadapan web >tutorial js >Mengapa Fungsi JavaScript Kembali Tidak Ditakrifkan Apabila Pemisah Baris Berlaku Antara Pernyataan Pemulangan dan Objek Dikembalikan?

Mengapa Fungsi JavaScript Kembali Tidak Ditakrifkan Apabila Pemisah Baris Berlaku Antara Pernyataan Pemulangan dan Objek Dikembalikan?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 09:08:291057semak imbas

Why Does a JavaScript Function Return Undefined When a Line Break Occurs Between the Return Statement and Returned Object?

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!

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