ईसीएमए-/जावास्क्रिप्ट भाषा किसी भी वेरिएबल को फहराती है जिसे किसी फ़ंक्शन के शीर्ष पर कहीं भी साथ घोषित किया जाता है। ऐसा इसलिए है क्योंकि इस भाषा में कार्य का दायरा है और इसमें कई अन्य सी-जैसी भाषाओं की तरह ब्लॉक स्कोप नहीं है।
function() { के लिए (var a =0; a <7; a++) { var b =100; }}पूर्व>के समान है
फ़ंक्शन() { वर बी; के लिए (वर ए =0; ए <7; ए ++) {बी =100; }}पूर्व>लेकिन लेट के साथ ऐसा नहीं है। चलो लेक्सिकल स्कोपिंग है। इसलिए जब तक आपको लूप के बाहर समान चर की आवश्यकता नहीं होगी (या यदि प्रत्येक पुनरावृत्ति पिछले पुनरावृत्ति में उस चर के लिए किए गए ऑपरेशन पर निर्भर करती है), तो उस दायरे को घोषित करना बेहतर होता है जिसके भीतर इसका उपयोग किया जाता है।