लें इस कोड:कोई संदर्भ वापस नहीं होने पर एक गुंजाइश समाप्त हो जाती है? उदाहरण के लिए
var test = (function(){
var name = 'rar';
return function foo(){
console.log('test');
};
}());
foo
test
भीतरी दायरे में name
के सभी संदर्भ बिना के लिए वापस आ जाता है। name
का क्या होता है? क्या यह नष्ट हो गया है? या क्या यह अस्तित्व में रहता है और लौटे हुए फ़ंक्शन के साथ लटकता रहता है, लेकिन इसका उपयोग नहीं किया जा सकता है? पहला मामला, निम्नलिखित कर रही करने के समान होगा, जैसे कि name
समीकरण ?:
var test = function foo(){
console.log('test');
};
यहाँ का हिस्सा कभी नहीं था एक और बात है:
var test2 = (function(){
var name = 'rar';
var age = '20';
return function foo(){
console.log(age);
};
}());
age
foo
द्वारा संदर्भित किया जाता है और एक बंद बनेगी । हालांकि, name
अभी भी किसी भी चीज़ द्वारा संदर्भित नहीं है। इस मामले में name
का क्या होता है? क्या यह नष्ट हो गया है? या क्या यह अस्तित्व में रहता है और लौटे हुए फ़ंक्शन के साथ लटकता रहता है, लेकिन इसका उपयोग नहीं किया जा सकता है?
http://stackoverflow.com/a/864549/2269749 – BlitZ
@CORRUPT उत्तर यह इंगित करते हैं कि क्या होता है कार्यान्वयन पर निर्भर करता है। तो इसका मतलब है, सबसे बुरे मामले में, 'नाम' रहेगा, क्या यह सही है? – Joseph
हां। ब्राउज़रों के पास अलग-अलग जेएस जीसी इंजन हैं, प्रत्येक इस मामले में अलग-अलग कार्य कर सकते हैं। स्मृति रिसाव को रोकने के लिए, एक विकल्प के रूप में 'name = null' पर विचार करें। – BlitZ