# JSON, Regex और Event Loop — जावास्क्रिप्ट

Source: https://www.geekswithgeeks.com/hi/javascript/js-json-regex-loop

> डेटा को serialize करना, पैटर्न मिलाना, और क्यों असिंक्रोनस कोड नहीं रुकता।

## JSON.stringify और parse

`stringify` किसी JS मान को JSON string में बदलता है; `parse` इसका उल्टा करता है।

```js
const user = { name: "Ada", age: 36 };
const json = JSON.stringify(user);
console.log(json);              // '{"name":"Ada","age":36}'
console.log(JSON.parse(json));  // back to an object
```

## बेसिक regex

`.test()` मैच जाँचता है और boolean लौटाता है; `.match()` असली मैच किया गया टेक्स्ट लौटाता है।

```js
const pattern = /^\d{3}-\d{4}$/;
console.log(pattern.test("555-1234"));       // true
console.log("Call 555-1234 now".match(/\d{3}-\d{4}/)[0]);  // "555-1234"
```

## एक नज़र में event loop

JS **एक ही thread** पर चलता है, पर असिंक्रोनस काम (timer, fetch) ब्राउज़र/Node को सौंप दिया जाता है, और उसका callback तभी queue में जाता है जब मौजूदा call stack खाली हो — इसलिए असिंक्रोनस कोड नहीं रुकता।

**Quiz:** setTimeout(fn, 0) fn को तुरंत क्यों नहीं चलाता?

- [x] क्योंकि यह fn को मौजूदा call stack खत्म होने के बाद चलाने के लिए queue करता है
- [ ] क्योंकि 0ms का मतलब असल में कभी नहीं है
- [ ] क्योंकि setTimeout पूरी तरह सिंक्रोनस है

*Answer:* क्योंकि यह fn को मौजूदा call stack खत्म होने के बाद चलाने के लिए queue करता है. इसका callback 0ms देरी के बावजूद call stack खाली होने का इंतज़ार करता है।
