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