ได้ ทำได้ ใน 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 บน
windowobject (ในเบราว์เซอร์) - ใน Strict Mode (
"use strict") จะโยนReferenceErrorทันที — ควรใช้ strict mode เสมอ - การใช้ implicit global ถือเป็น bad practice นำไปสู่บั๊กที่หายาก