จุด "." มีสองความหมายใน JavaScript
อรรถศาสตร์ 1. ใช้แทนจุดทศนิยม (เลขทศนิยม) ในทางคณิตศาสตร์ เช่น 2.5
ความหมาย 2. รับแอตทริบิวต์และวิธีการของวัตถุ เช่น [].push(2)
ไม่มีอะไรยากที่จะเข้าใจ แต่คำถามต่อไปนี้น่าสนใจ
คัดลอกรหัสรหัสดังต่อไปนี้:
// บรรทัดโค้ดนี้จะถูกดำเนินการอย่างไร?
1.toString();
ดังต่อไปนี้ใน Firebug
จุดที่นี่เป็นการแสดงออกถึงความหมายที่กล่าวถึงข้างต้น ดังนั้นจุดจะต้องตามหลังด้วยตัวเลข สิ่งต่อไปนี้คือ toString และไวยากรณ์การรายงานไม่ถูกต้อง
วิธีแก้ไขนั้นง่ายมาก เช่น การบวกวงเล็บ
คัดลอกรหัสรหัสดังต่อไปนี้:
(1).toString();
คุณยังสามารถเขียนแบบนี้ได้ แต่มันยากที่จะเข้าใจ
คัดลอกรหัสรหัสดังต่อไปนี้:
1..toString();
สาเหตุที่สามารถทำงานในเบราว์เซอร์ได้ก็เพราะว่าแต่ละเบราว์เซอร์ JS engine เข้าใจ "1..toString()" เป็น "1.0.toString()" จุดแรกที่นี่คือความหมาย 1 และจุดที่สองคือความหมาย 2
มีวิธีการเขียนที่แปลกกว่านั้น แต่ไม่มีการรายงานข้อผิดพลาด
คัดลอกรหัสรหัสดังต่อไปนี้:
1.toString(); // โปรดทราบว่ามีช่องว่างก่อนจุด
แน่นอนว่า จุดที่นี่คือความหมาย 2 นั่นคือ JS engine จะละเว้นช่องว่างก่อนตัวดำเนินการ dot จริงๆ แล้ว ไม่ว่าช่องว่างก่อนหรือหลังจุดนั้นก็จะถูกละเว้น ดังต่อไปนี้
คัดลอกรหัสรหัสดังต่อไปนี้:
1. toString(); // มีช่องว่างก่อนและหลังจุด
1. toString(); // มีช่องว่าง 2 ช่องก่อนและหลังจุด
1.toString(); // มีแท็บอยู่ก่อนจุด
1. toString(); // มีแท็บก่อนและหลังจุด
กลไก JS จะไม่เพียงแต่ละเว้นช่องว่าง แต่ยังละเว้นแท็บด้วย