JavaScript में let और var में क्या अंतर है?
सभी को नमस्कार! मैंने अभी JavaScript सीखना शुरू किया है और मुझे एक समझ से परे स्थिति का सामना करना पड़ा। जब मैं `var` और `let` के माध्यम से वेरिएबल घोषित करता हूं, तो कोड अलग-अलग व्यवहार करता है, और मैं समझ नहीं पा रहा हूं कि क्यों।
यहां एक उदाहरण है जिसने मुझे भ्रमित किया:
```javascript
function test() {
if (true) {
var x = 10;
let y = 20;
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
}
```
`x` `if` ब्लॉक के बाहर क्यों उपलब्ध है, जबकि `y` नहीं? मैंने सोचा कि दोनों वेरिएबल एक ही स्थान पर घोषित किए गए हैं।
लूप के साथ एक और उदाहरण:
```javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// आउटपुट: 3 3 3
for (let j = 0; j < 3; j++) {
setTimeout(() => console.log(j), 1000);
}
// आउटपुट: 0 1 2
```
लूप में `var` इतना अजीब व्यवहार क्यों करता है? मुझे उम्मीद थी कि दोनों विकल्प 0, 1, 2 प्रिंट करेंगे। मैं क्या गलत कर रहा हूं? वेरिएबल घोषित करने के इन दो तरीकों के बीच मूलभूत अंतर क्या है? मैं आभारी रहूंगा अगर कोई समझाए।