एक "मुफ़्त-अनुवाद" हो सकता है: "out of scope" - variables
।
ईसीएमएस्क्रिप्ट लिक्सिकल स्कॉपिंग का उपयोग करता है, इसलिए एक फ्री वैरिएबल एक वेरिएबल होता है जिसे माता-पिता-स्कोप में परिभाषित किया गया था और स्कोप-चेन सर्च द्वारा देखा गया था।
(function _outerScope() {
var foo = 42;
(function _innerScope() {
var bar = 100;
console.log(foo + bar); // 142
}());
}());
उपरोक्त उदाहरण में, foo
एक मुक्त चर_innerScope
के संदर्भ में है। यदि यह ईसीएमएस्क्रिप्ट की अंतर्निहित अवधारणाओं में त्वरित नज़र डाले तो यह बहुत स्पष्ट हो जाता है।
एक प्रसंग एक सक्रियण वस्तु (ES3 में) से जुड़ा हुआ है, क्रमशः एक शाब्दिक पर्यावरण रिकार्ड है, जो तरह बातें शामिल हैं (ES5 में):, साथ ही के लिए एक संदर्भ के रूप में function declarations
, variables declared with var
और formal paramters
सभी अभिभावक सक्रियण ऑब्जेक्ट्स/लेक्सिकल वातावरण। यदि किसी चर को एक्सेस करने की आवश्यकता है, तो ईसीएमएस्क्रिप्ट इंजन पहले एओ/LES वर्तमान संदर्भ से पहले देखेंगे; अगर यह वहां नहीं पाया जा सकता है, तो यह माता-पिता एओ के/LE के रूप में देखता है।
किसी भी के बाद से प्रसंग भंडार एक सरणी की तरह संरचना में इस डेटा (मत भूलना हम कार्यान्वयन के स्तर के बारे में यहाँ बात कर रहे हैं, न स्वयं Javascript), हम Lexical Scope
के बारे में, बात कर रहे हैं क्योंकि हम सभी के माध्यम से खोज क्रम में संदर्भ संदर्भ।
एक नि: शुल्क चर केवल एक चर है जिसे किसी दिए गए फ़ंक्शन के अंदर घोषित नहीं किया जाता है, लेकिन इसके अंदर उपयोग किया जाता है। –