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

Linda Hamilton
Lepaskan: 2024-10-24 09:08:29
asal
974 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

atau

<code class="javascript">function() {
  return (
    doSideEffects(),
    console.log("this is the second side effect"),
    1 + 1
  );
}</code>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!