JavaScript-এ eval() ফাংশন স্ট্রিং কোড হিসেবে এক্সিকিউট করে। এটি স্ট্রিং ভেরিয়েবল নাম দিয়ে আসল ভেরিয়েবল অ্যাক্সেস করতে ব্যবহৃত হয় কিন্তু সিকিউরিটি ঝুঁকি থাকায় এড়ানো ভালো।
সিনট্যাক্স
eval(string)
উদাহরণ
var studentMarks = [76, 34, 56, 78, 81, 98, 90, 59, 64];
// স্ট্রিং থেকে অ্যারে অ্যাক্সেস
var arrayName = "studentMarks";
var arrayRef = eval(arrayName); // studentMarks অ্যারে রিটার্ন
console.log("ইনডেক্স ১ এর মান: " + arrayRef[1]); // 34
চলানোর পদ্ধতি
- কোডটি
evalDemo.jsনামে সংরক্ষণ করুন। - টার্মিনালে চালান:
node evalDemo.js
আউটপুট
ইনডেক্স ১ এর মান: 34
⚠️ সিকিউরিটি সতর্কতা
- XSS ঝুঁকি: অনট্রাস্টেড ইনপুটে `eval()` ব্যবহার করবেন না।
- পারফরম্যান্স: জাস্ট-ইন-টাইম কম্পাইলেশন বাধা দেয়।
- স্কোপ: লোকাল ভেরিয়েবল এক্সেস করতে পারে (লিকেজ)।
নিরাপদ বিকল্পসমূহ
| উদ্দেশ্য | নিরাপদ পদ্ধতি |
|---|---|
| ভেরিয়েবল নাম দিয়ে অ্যাক্সেস | Object/Map ব্যবহার: `obj[varName]` |
| JSON পার্স | JSON.parse(str) (কোড এক্সিকিউশন নেই) |
| ফাংশন কনস্ট্রাক্টর | `new Function(...)` (সandboxed) |
| ম্যাথ এক্সপ্রেশন | math.js লাইব্রেরি বা কাস্টম পার্সার |
নিরাপদ উদাহরণ (Object Lookup)
const data = {
studentMarks: [76, 34, 56, 78, 81, 98, 90, 59, 64],
studentNames: ["John", "David", "Bob"]
};
function getValueByName(obj, path) {
return path.split('.').reduce((o, k) => o?.[k], obj);
}
console.log(getValueByName(data, "studentMarks.1")); // 34
console.log(getValueByName(data, "studentNames.0")); // John
নির্ণয়
প্রোডাকশন কোডে `eval()` ব্যবহার করবেন না। উপরের নিরাপদ বিকল্পগুলো ব্যবহার করুন।