शुरुआती JavaScript डेवलपर्स (Node.js) की शीर्ष गलतियाँ
JavaScript सबसे लोकप्रिय प्रोग्रामिंग भाषाओं में से एक है, खासकर Node.js वातावरण में। हालाँकि, इसकी लचीलापन और एसिंक्रोनस प्रकृति अक्सर शुरुआती लोगों के लिए बाधा बन जाती है। इस लेख में, हम JavaScript में शुरुआती डेवलपर्स द्वारा की जाने वाली 4 सबसे सामान्य गलतियों पर चर्चा करेंगे और स्पष्ट उदाहरणों के साथ उन्हें ठीक करने का तरीका दिखाएंगे।
1. एसिंक्रोनसिटी और कोड निष्पादन क्रम की गलतफहमी
सबसे आम गलती यह उम्मीद करना है कि कोड सिंक्रोनस भाषाओं की तरह लाइन दर लाइन निष्पादित होगा। Node.js में, कई ऑपरेशन (फ़ाइल पढ़ना, DB क्वेरी, टाइमर) एसिंक्रोनस होते हैं।
गलत उदाहरण:
const fs = require('fs');let data = '';
fs.readFile('file.txt', 'utf8', (err, content) => { if (err) throw err; data = content;});
console.log(data); // आउटपुट: '' (खाली स्ट्रिंग), फ़ाइल की सामग्री नहींसही तरीका:
const fs = require('fs').promises;
async function readFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); // अब हमें फ़ाइल की सामग्री मिलेगी } catch (err) { console.error(err); }}
readFile();सुझाव: एसिंक्रोनस कोड के साथ काम करने के लिए हमेशा async/await या प्रॉमिस (.then()) का उपयोग करें। कभी भी यह न मानें कि कॉलबैक अगली लाइन से पहले निष्पादित होगा।
2. स्कोप और var, let, const कीवर्ड में भ्रम
कई शुरुआती आदत के कारण var का उपयोग करते हैं, यह नहीं समझते कि इसका ब्लॉक स्कोप नहीं है। इससे लूप और कंडीशनल स्टेटमेंट में मुश्किल से पकड़ में आने वाले बग होते हैं।
var के साथ गलत उदाहरण:
for (var i = 0; i < 5; i++) { setTimeout(() => console.log(i), 100);}// आउटपुट: 5, 5, 5, 5, 5 (0,1,2,3,4 नहीं)let के साथ सुधार:
for (let i = 0; i < 5; i++) { setTimeout(() => console.log(i), 100);}// आउटपुट: 0, 1, 2, 3, 4सिफारिशें:
const— उन वेरिएबल के लिए डिफ़ॉल्ट रूप से उपयोग करें जिन्हें पुनः असाइन नहीं किया जाता।let— उन वेरिएबल के लिए जिनका मान बदलता है।var— आधुनिक कोड में इससे बचें (Node.js में इसकी लगभग आवश्यकता नहीं है)।
3. ऑब्जेक्ट और ऐरे का म्यूटेशन (अपरिवर्तनीयता)
शुरुआती डेवलपर्स अक्सर मूल डेटा को सीधे बदल देते हैं, जिससे साइड इफेक्ट होते हैं, खासकर React, Redux या जटिल लॉजिक के साथ काम करते समय।
गलत उदाहरण:
const user = { name: 'इवान', age: 30 };
function updateAge(person, newAge) { person.age = newAge; // मूल ऑब्जेक्ट का म्यूटेशन! return person;}
const updatedUser = updateAge(user, 31);console.log(user.name); // 'इवान' — ठीक हैconsole.log(user === updatedUser); // true — यह एक ही ऑब्जेक्ट है, बग!सही तरीका (नया ऑब्जेक्ट बनाना):
const user = { name: 'इवान', age: 30 };
function updateAge(person, newAge) { return { ...person, age: newAge }; // कॉपी बनाएँ}
const updatedUser = updateAge(user, 31);console.log(user.age); // 30 — मूल ऑब्जेक्ट नहीं बदलाconsole.log(updatedUser.age); // 31सुझाव: ऐरे के लिए, यदि आप इम्यूटेबिलिटी बनाए रखना चाहते हैं तो push() या splice() के बजाय map(), filter(), reduce() का उपयोग करें।
4. Promise और async/await में त्रुटि प्रबंधन की अनदेखी
कई शुरुआती एसिंक्रोनस कोड में त्रुटियों को संभालना भूल जाते हैं, जिससे पूरा Node.js एप्लिकेशन क्रैश हो जाता है।
गलत उदाहरण:
async function fetchData() { const response = await fetch('https://api.example.com/data'); const data = await response.json(); console.log(data);}
fe