Hanya sebelum}, setelah satu atau lebih garis istirahat, dan akhir input program dimasukkan
Dengan kata lain, Anda hanya dapat menghilangkan titik koma di mana garis, blok kode, dan sepotong program berakhir.
Artinya, Anda dapat menulis kode berikut
Salinan kode adalah sebagai berikut:
function square (x) {
var n = +x
kembali n * n
}
Tetapi tidak dapat ditulis seperti kode berikut, jadi itu akan melaporkan kesalahan
Salinan kode adalah sebagai berikut:
Area fungsi (r) {r = +r return math.pi*r*r} // error
Masukkan hanya jika tanda input berikutnya tidak dapat diuraikan
Dengan kata lain, penyisipan titik koma adalah mekanisme koreksi kesalahan. Baca kode dan berbicara
Salinan kode adalah sebagai berikut:
a = b
(F())
// Ini dapat menguraikan dengan benar ke dalam pernyataan terpisah dengan harga satuan dari pernyataan berikut.
a = b (f ())
a = b
F()
// diuraikan menjadi dua pernyataan independen
a = bf (); // parsing salah
Jadi, Anda harus memperhatikan awal pernyataan berikutnya untuk menentukan apakah Anda dapat secara hukum menghilangkan titik koma.
(, [, +, -, dan /, maka yang terbaik adalah tidak menghilangkan titik koma di depannya.
Berikan contoh untuk diilustrasikan
Salinan kode adalah sebagai berikut:
a = b
['r', 'g', 'b']. foreach (function (key) {
console.log (kunci);
});
Anda awalnya berpikir tidak ada kesalahan, tetapi parser diuraikan ke dalam pernyataan berikut
Salinan kode adalah sebagai berikut:
a = b ['r', 'g', 'b']. foreach (function (key) {
console.log (kunci);
});
Karena kalimat kedua dimulai dengan [, parser tidak akan secara otomatis memasukkan titik koma setelah pernyataan pertama, sehingga diuraikan seperti yang ditunjukkan di atas. Bukankah B ['B']. Foreach salah saat menguraikan persamaan di atas?
Oleh karena itu, jika pernyataan yang dimulai dengan lima karakter (, [, +, - -, dan / lebih baik untuk tidak menghilangkan titik koma sebelumnya.
Jika Anda ingin menghilangkan titik koma, seorang programmer yang berpengalaman akan mengikuti pernyataan untuk memastikan bahwa parser parse dengan benar. Seperti yang ditunjukkan di bawah ini
Salinan kode adalah sebagai berikut:
a = b
var x // pernyataan deklarasi ditambahkan secara khusus di sini untuk memastikan bahwa a = b tidak akan diuraikan dengan (f ())
(F())
Jadi jika Anda perlu menghilangkan titik koma, Anda harus memeriksa apakah tanda awal dari baris berikutnya adalah lima karakter di atas, menyebabkan parser menonaktifkan penyisipan otomatis titik koma, atau Anda juga dapat mengawali lima karakter (, [, +, -, dan / / /
Menghilangkan titik koma menyebabkan masalah koneksi skrip
Salinan kode adalah sebagai berikut:
//file1.js
(fungsi () {
// ...
}) ()
//file2.js
(fungsi () {
// ...
}) ()
Ketika dua file di atas terhubung, mereka akan diuraikan sebagai berikut
Salinan kode adalah sebagai berikut:
(fungsi () {
// ...
})()(fungsi () {
// ...
}) ()
Oleh karena itu, menghilangkan titik koma tidak hanya mengharuskan Anda untuk berhati -hati tidak hanya tentang tag berikutnya dari file saat ini, tetapi juga tentang tag apa pun yang mungkin muncul setelah pernyataan setelah skrip terhubung.
Untuk menghindari kesalahan parser parser, Anda dapat mengawali titik koma tambahan pada setiap file untuk melindungi skrip dari koneksi yang ceroboh. Jika pernyataan awal file diaktifkan dengan 5 karakter rapuh di atas, Anda harus menambahkan awalan titik koma tambahan.
JavaScript Sintaks Pembatasan Pembatasan
Produksi Pembatasan Sintaks JavaScript: Tidak ada jeda garis yang diizinkan antara dua karakter.
Berikan contoh:
Salinan kode adalah sebagai berikut:
Kembali
{};
Kode di atas diuraikan
Salinan kode adalah sebagai berikut:
kembali;
{}
;
Aturan penyisipan titik koma untuk pembangkangan diri dan operasi self-decrease
Salinan kode adalah sebagai berikut:
A
++
B
Pikirkan tentang apa kode di atas akan diuraikan? Mari kita ceritakan jawabannya, karena operator autoINCREMENT dapat digunakan sebagai operator preset dan operator postset, tetapi operator postset tidak dapat muncul sebelum garis istirahat, sehingga kode di atas diuraikan ke dalam
Salinan kode adalah sebagai berikut:
A;
++ b;
Titik koma tidak akan dimasukkan secara otomatis sebagai pemisah di kepala pernyataan kosong untuk loop.
Salinan kode adalah sebagai berikut:
untuk (var i = 0, total = 1
Saya <panjang
i ++) {
Total*= i;
}
Kode seperti di atas akan memiliki kesalahan penguraian.
Sementara badan loop kosong juga perlu ditampilkan titik koma, jika tidak, ia juga akan menyebabkan kesalahan penguraian.
Salinan kode adalah sebagai berikut:
fungsi mytest () {
Sementara (benar)
}
Harus ditulis sebagai berikut untuk menghindari kesalahan
Salinan kode adalah sebagai berikut:
fungsi mytest () {
sementara (benar);
}
Mari kita ringkas
1. Menyimpulkan titik koma hanya sebelum tag}, di akhir baris, dan di akhir program
2. Menyimpulkan titik koma hanya ketika tanda berikut tidak dapat diuraikan
3. Anda tidak boleh menghilangkan titik koma sebelum pernyataan yang dimulai dengan (, [,, +, -, dan / karakter.
4. Saat skrip terhubung, secara eksplisit masukkan titik koma di antara skrip
5. Anda tidak boleh membungkus garis sebelum parameter pengembalian, melempar, istirahat, lanjutkan, ++ atau -
6. titik titik koma tidak dapat disimpulkan sebagai pemisah untuk header untuk loop atau pernyataan kosong.