eval() स्ट्रिंग को JavaScript कोड के रूप में निष्पादित करता है। सुरक्षा जोखिम के कारण उत्पादन कोड में उपयोग न करें।
बुनियादी उपयोग
var studentMarks = [76, 34, 56, 78, 81, 98, 90, 59, 64];
// स्ट्रिंग से वेरिएबल नाम एक्सेस करें
var varName = "studentMarks";
var arrayRef = eval(varName); // studentMarks ऐरे लौटाता है
console.log(arrayRef[1]); // 34 (इंडेक्स 1 का मान)
डायनामिक प्रॉपर्टी एक्सेस (eval के बिना - बेहतर)
// ✅ अच्छा: ब्रैकेट नोटेशन
const data = { user: { name: "John", age: 30 } };
const path = "user.name";
const value = path.split('.').reduce((obj, key) => obj?.[key], data);
console.log(value); // "John"
// ❌ बुरा: eval उपयोग
const value = eval("data." + path); // सुरक्षा जोखिम
eval() के खतरे
- कोड इंजेक्शन - दुर्भावनापूर्ण कोड निष्पादित हो सकता है
- डीबगिंग कठिन - स्टैक ट्रेस अस्पष्ट
- प्रदर्शन - इंजन ऑप्टिमाइज़ नहीं कर सकता
- स्कोप प्रदूषण - लोकल वेरिएबल्स एक्सेस कर सकता है
सुरक्षित विकल्प
// 1. ऑब्जेक्ट लुकअप
const vars = { studentMarks: [76, 34, 56] };
const name = "studentMarks";
console.log(vars[name][1]); // 34
// 2. Function कंस्ट्रक्टर (थोड़ा बेहतर लेकिन अभी जोखिम)
const func = new Function('arr', 'return arr[1]');
console.log(func(studentMarks)); // 34
// 3. JSON.parse (केवल डेटा के लिए)
const jsonStr = '[76,34,56,78]';
const arr = JSON.parse(jsonStr);
console.log(arr[1]); // 34
चलाने का तरीका
node eval-demo.js
आउटपुट
34
निष्कर्ष
eval() का उपयोग न करें। डायनामिक एक्सेस के लिए ऑब्जेक्ट/मैप लुकअप, Function कंस्ट्रक्टर, या JSON.parse उपयोग करें।