मुझे चलो और var के बीच का अंतर पता है। चलो ब्लॉक दायरा है और var कार्यात्मक दायरा है।सेटटाइम के अंदर let और var के बीच अंतर?
for(var i=0; i< 3; i++){
setTimeout(function(){
console.log(i);
}, 10);
}
output : 3
3
3
मुझे पता है कि कोड ऊपर टुकड़ा काम कर रहा है (console.log(i)
उस समय निष्पादित हो रहा है जब मैं का मूल्य 3 है, क्योंकि मैं के दायरे वैश्विक है)।
लेकिन
for(let i=0; i< 3; i++){
setTimeout(function(){
console.log(i);
}, 10);
}
output : 1
2
3
ऊपर कोड स्निपेट मुझे भ्रमित। मेरे अनुसार यह संदर्भ त्रुटि फेंकना चाहिए (क्योंकि उस समय जब console.log(i)
निष्पादित होता है, तो वैश्विक दायरे में नहीं, वैश्विक दायरे में नहीं, और मुझे वैश्विक रूप से घोषित/परिभाषित नहीं किया जाता है। इसलिए इसे संदर्भ त्रुटि देना चाहिए।)
कोई भी जो बता सकता है कि रनटाइम पर काम करने के लिए दूसरा कैसे लूप?
चलो उपयोग करते समय प्रत्येक पुनरावृत्ति के लिए बंदरगाह के नए उदाहरण पर बंद हो जाता है। – Blindman67
यदि कोई 'संदर्भ त्रुटि' फेंक दी जाएगी, तो कोई भी प्रकार का बंदरगाह काम नहीं करेगा। न तो फंक्शन स्कोप 'var' के लिए एक, न ही' चलो 'के लिए एक। –
जब आपके पास समय है तो यह [लेख] (http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html) पढ़ें और पढ़ें। यह वास्तव में अच्छी तरह से scoping, hoisting आदि बताते हैं। – Fahmi