Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เกิดอะไรขึ้นถ้าไม่ประกาศตัวแปรใน JavaScript?

ได้ ทำได้ ใน global scope คุณสามารถใช้ตัวแปรโดยไม่ต้องประกาศ ตัวแปร "no var" ชื่อ "points" จะค้นหาใน scope chain เนื่องจากไม่ได้ใช้คีย์เวิร์ด var

<html> 
  <body> 
    <script> 
      var rank = 5; 
      points = 50; 
      marks = 300; 
      // Anonymous function 
      (function() { 
        points = 100; // ทับค่า global scope points 
        var rank = 4; // สร้าง rank ใหม่ใน scope ของฟังก์ชันนี้ 
        var marks = 900; 
        document.write(rank + "\r\n"); // พิมพ์ 4 
        document.write(points + "\r\n"); // พิมพ์ 100 
        document.write(marks + "\r\n"); // พิมพ์ 900 
      })(); 
      document.write('
'); document.write('
'); document.write(rank + "\r\n"); // พิมพ์ 5 document.write(points + "\r\n"); // พิมพ์ 100 (ถูกทับ) document.write(marks + "\r\n"); // พิมพ์ 300 </script> </body> </html>

ข้อสังเกตสำคัญ

  • การกำหนดค่าให้ตัวแปรที่ไม่ได้ประกาศ (implicit global) จะสร้าง property บน window object (ในเบราว์เซอร์)
  • ใน Strict Mode ("use strict") จะโยน ReferenceError ทันที — ควรใช้ strict mode เสมอ
  • การใช้ implicit global ถือเป็น bad practice นำไปสู่บั๊กที่หายาก