जावास्क्रिप्ट में वेरिएबल्स की स्कोप: 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