জাভাস্ক্রিপ্ট টিউটোরিয়াল-শিখুন গল্পে গল্পে সাথে 1100+ Exercise

  • জাভাস্ক্রিপ্ট পরিচিতি-Introduction to JavaScript
  • প্রোগ্রামিং শুরু করতে কতটুকু গণিত লাগে?
  • প্রোগ্রামিং শুরু করতে কতটুকু ইংরেজি জানা লাগে?
  • ভালো প্রোগ্রামার কিভাবে হবো? [+৭টি গুরুত্বপূর্ণ টিপস]
  • উল্টাপথের do ... while
  • Switch টিপে case জিতো
  • with eval ইবলিস
  • জাভাস্ক্রিপ্ট অঙ্ক বুঝে না
  • if যদি IIFE হয়
  • use strict-এর কড়া স্যার

with eval ইবলিস


জাভাস্ক্রিপ্টে ইচ্ছামতো লিখে কোড চালানোর একটা ডেঞ্জারাস সিস্টেম আছে। এইটা সাধারণভাবে ইউজ করতে না করে এবং খুব অল্পকিছু কাজ ছাড়া এইটার তেমন দরকারও পড়ে না। আর এইটার নাম eval ফাংশন। কেউ কেউ এইটার বিষয়ে সতর্ক করে বলে evil eval বা eval ইবলিস। 


eval এমন একটা ফাংশন, যেটা ইনপুট হিসেবে যেকোনো স্ট্রিং নিবে, আর সেটাকে কোডের মতো এক্সিকিউট করবে। এইটা একটা সুপার পাওয়ার, আবার এইটার কারণে অনেক উল্টাপাল্টা হয়ে যেতে পারে। খারাপ ইন্টেনশনের কোনো ইউজার এসে ভিতরের সেটিংস মুছে দিতে পারে। মান চেইঞ্জ করে দিতে পারে।


  const num = 5;
  eval("console.log(num + 5)"); 

Output: 10


এখানে eval() স্ট্রিং হিসেবে পাইছে "console.log(num + 5)"-কে। তারপর সেটাকে কোডের মতো রান করে আউটপুট 10 দিছে। এইটুক পর্যন্ত ভদ্র আছে। তবে কেউ যদি ইউজার ইনপুট হিসেবে দিয়ে দেয়— 


  let user = 'regular dude';
  const userInput = "user = 'Hacker!'";
  eval(userInput);
  console.log(user);

Output: Hacker!


তাহলে কিন্তু ইউজারের তথ্য বা অন্য অনেক গুরুত্বপূর্ণ জিনিস eval করে হাতিয়ে নিতে পারবে বা নষ্ট করতে পারবে। তাই eval ইউজ করাকে বেশির ভাগ সময় evil মনে করে অনেকেই। 


এসব কারণে eval() ব্যবহার না করাই বুদ্ধিমানের কাজ। এটা সিকিউরিটি ঝুঁকি বাড়ায়, আর কোড স্লো করে। ডিবাগিংয়ে সমস্যা তৈরি করে।


with কী?

with হলো জাভাস্ক্রিপ্টের একটা স্টেটমেন্ট, যেটা কোনো অবজেক্টের ইচ্ছামতো স্কোপ সেট করার জন্য ইউজ করা যায়। সহজভাবে বলতে গেলে, with তোর কোডের স্কোপের মতো কাজ করে।


  const person = { name: "John", age: 30 };

  with (person) {
   console.log(name); 
   console.log(age); 
  }

Output:
John
30


with (person)-এর ভেতরে name আর age সরাসরি কল করা যাচ্ছে। কারণ, person অবজেক্টের প্রোপার্টি সরাসরি অ্যাক্সেস করছে।


with-এর কারণে কিছু সমস্যা হয়। যেমন, with স্কোপে নতুন ভেরিয়েবল থাকলে জাভাস্ক্রিপ্ট ঠিকমতো বুঝতে পারে না, কোনটা with-এর স্কোপের, আর কোনটা গ্লোবাল বা লোকাল।


  const name = "Jane";
  const person = { name: "John" };

  with (person) {
   console.log(name); 
  }

Output: John


এখানে `name` কোনটা? `John` না `Jane`?


কোডে with ব্যবহার করলে এরর বা বাগ খুঁজে বের করা অনেক জটিল হয়ে যায়। সেজন্য মডার্ন জাভাস্ক্রিপ্টে স্ট্রিক্ট মোড ('use strict') ব্যবহার করলে with ইউজ করা যায় না। তাই with-এর পরিবর্তে সরাসরি অবজেক্ট প্রোপার্টি অ্যাক্সেস করা ভালো।


Practice: 

  1. with কী? এইটা কী কাজ করে? 
  2. eval() কী জিনিস। এইটা কেন ইউজ করা উচিত না। 


Previous PageNext Page