কম্পিউটার টিউটোরিয়াল

JavaScript-এ eval() ব্যবহার করে নির্দিষ্ট ভ্যালু ফেচ করা

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

চলানোর পদ্ধতি

  1. কোডটি evalDemo.js নামে সংরক্ষণ করুন।
  2. টার্মিনালে চালান: 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()` ব্যবহার করবেন না। উপরের নিরাপদ বিকল্পগুলো ব্যবহার করুন।

  1. জাভাস্ক্রিপ্ট দিয়ে কুকি সেট এবং গেট কীভাবে করবেন?

  2. জাভাস্ক্রিপ্টে বাটনের ভ্যালু পাওয়া

  3. জাভাস্ক্রিপ্ট দিয়ে নির্দিষ্ট টেক্সট সম্বলিত div হাইড করার পদ্ধতি

  4. জাভাস্ক্রিপ্ট দিয়ে টু-ডু লিস্ট তৈরি করা