block คือ code ที่อยู่ในวงเล็บปีกกา { }

scope คือ บริเวณที่เราประกาศตัวแปร

scope จะสัมพันธ์กับ block เพราะถ้าตัวแปรไม่อยู่ด้านใน block ก็อยู่ด้านนอก block

Global Scope

global scope

global scope คือ ส่วนของโปรแกรมที่ตัวแปรถูกสร้างอยู่ด้านบอก block เรียกตัวแปรนี้ว่า global variable

เพราะตัวแปรไม่ได้อยู่ด้านใน block จึงสามารถอ้างถึงตัวแปรนั้นจากส่วนไหนของโปรแกรมก็ได้

Block Scope

block scope

block scope คือ ตัวแปรที่อยู่ด้านใน block เรียกตัวแปรนี้ว่า local variable

สามารถอ้างถึง local variable ได้จากใน block ของมันเท่านั้น

Global namespace

เมื่อเราประกาศ global variable ตัวแปรที่ประกาศจะไปอยู่ใน global namespace และ global namespace จะอนุญาตให้ตัวแปรถูกอ้างถึงจากส่วนไหนในโปรแกรมก็ได้

Scope pollution

scope pollution หรือ global namespace pollution คือ สถานการณ์ที่เรามี global variable หลายตัวมากเกินไป หรือ ในสถานการณ์ที่เรานำตัวแปรจาก scope หนึ่งมาใช้มาใช้ในอีก scope หนึ่ง ส่งผลให้เกิดตัวแปรที่ซ้ำกัน และเป็นเหตุให้โปรแกรมทำงานผิดพลาดหรือเกิด error