Titik "." memiliki dua semantik dalam JavaScript
Semantik 1. Mewakili titik desimal (angka floating point) dalam aritmatika, misalnya 2,5
Semantik 2. Dapatkan atribut dan metode objek, seperti [].push(2)
Hampir tidak ada sesuatu yang sulit untuk dipahami, namun pertanyaan berikut ini menarik.
Copy kode kodenya sebagai berikut:
// Bagaimana baris kode ini dieksekusi?
1.toString();
Sebagai berikut di Firebug
Titik di sini mengungkapkan semantik 1 yang disebutkan di atas, jadi titik tersebut harus diikuti dengan angka.
Solusinya sangat sederhana, seperti menambahkan tanda kurung
Copy kode kodenya sebagai berikut:
(1).toString();
Anda masih bisa menulisnya seperti ini, tetapi lebih sulit untuk dipahami
Copy kode kodenya sebagai berikut:
1..toString();
Alasan mengapa ini dapat berjalan di browser adalah karena setiap mesin JS browser memahami "1..toString()" sebagai "1.0.toString()". Titik pertama di sini adalah semantik 1, dan titik kedua adalah semantik 2.
Ada cara penulisan yang lebih aneh lagi, tetapi tidak ada kesalahan yang dilaporkan.
Copy kode kodenya sebagai berikut:
1.toString(); // Perhatikan bahwa ada spasi sebelum titik
Jelasnya, titik di sini adalah semantik 2, yaitu mesin JS akan mengabaikan spasi sebelum operator titik. Faktanya, tidak peduli spasi sebelum atau sesudahnya, itu akan diabaikan. sebagai berikut
Copy kode kodenya sebagai berikut:
1. toString(); // Ada spasi sebelum dan sesudah titik
1. toString(); // Ada dua spasi sebelum dan sesudah titik.
1.toString(); // Ada tab sebelum titik
1. toString(); // Terdapat tab sebelum dan sesudah titik.
Mesin JS tidak hanya akan mengabaikan spasi, tetapi juga mengabaikan tab.