জাভাস্ক্রিপ্টের অদ্ভুত আচরণ, এবং কেন তবু এটা ভালোবাসার মতো ভাষা

· 2 min read · Syed Omar Faruk Towaha
জাভাস্ক্রিপ্টের অদ্ভুত আচরণ, এবং কেন তবু এটা ভালোবাসার মতো ভাষা

জাভাস্ক্রিপ্ট নিয়ে ইন্টারনেটে যত মিম আছে, অন্য কোনো ভাষা নিয়ে বোধহয় এত নেই। আর সত্যি বলতে, কিছু মিম পুরোপুরি ন্যায্য।

JS console
প্রতিটার পেছনে একটা ব্যাখ্যা আছে। কিছু ব্যাখ্যা একটু লজ্জাজনক।

"5" + 2 কেন "52"

জাভাস্ক্রিপ্টে + চিহ্নের দুটো কাজ: সংখ্যা যোগ করা আর লেখা জোড়া দেওয়া। একপাশে স্ট্রিং থাকলে সে জোড়া দেয়। কিন্তু - চিহ্নের একটাই কাজ, বিয়োগ। তাই "5" - 2 তে সে "5" কে সংখ্যা বানিয়ে ৩ দেয়।

ফর্মের ইনপুট সবসময় স্ট্রিং আসে, তাই এই সমস্যা খুব সাধারণ:

const boyos = document.querySelector("#age").value;  // "25" (স্ট্রিং!)
console.log(boyos + 1);           // "251"
console.log(Number(boyos) + 1);   // 26

নিয়ম: সংখ্যা চাইলে আগে সংখ্যা বানিয়ে নিন।

0.1 + 0.2 কেন 0.3 না

এটা জাভাস্ক্রিপ্টের দোষ না। কম্পিউটার বাইনারিতে সংখ্যা রাখে, আর ০.১ বাইনারিতে ঠিকঠাক লেখা যায় না, যেমন ১/৩ দশমিকে ঠিকঠাক লেখা যায় না (০.৩৩৩...)। পাইথন, জাভা, সি সবাই একই কাজ করে। টাকার হিসাব পয়সায় (পূর্ণ সংখ্যায়) রাখুন।

== বনাম ===

== তুলনা করার আগে টাইপ বদলানোর চেষ্টা করে, আর তাতেই [] == false এর মতো অদ্ভুত ফল আসে। === টাইপ না বদলে তুলনা করে।

সহজ নিয়ম: সবসময় === ব্যবহার করুন। == এর কথা ভুলে যান।

typeof null কেন "object"

এটা আসলে জাভাস্ক্রিপ্টের শুরুর দিকের একটা বাগ। ১৯৯৫ সালে ভাষাটা খুব তাড়াহুড়ায় বানানো হয়েছিল (বলা হয় মাত্র দশ দিনে প্রথম সংস্করণ)। পরে এটা ঠিক করলে লক্ষ লক্ষ ওয়েবসাইট ভেঙে যেত, তাই বাগটা এখন "ফিচার" হিসেবে থেকে গেছে। প্রযুক্তির ইতিহাসে এমন উদাহরণ অনেক।

তাহলে কেন ভালোবাসব?

কারণ এই অদ্ভুত কোণগুলো বাদ দিলে জাভাস্ক্রিপ্ট অসাধারণ:

আধুনিক জাভাস্ক্রিপ্ট (let, const, অ্যারো ফাংশন, async/await) পুরনো দিনের তুলনায় অনেক পরিষ্কার। আর টাইপ নিয়ে ঝামেলা কমাতে চাইলে TypeScript আছে, যেটা অনেক কোম্পানি এখন ব্যবহার করে।

নতুনদের জন্য পাঁচটা নিয়ম

  1. var না, let আর const।
  2. == না, ===।
  3. ইনপুট সংখ্যায় রূপান্তর করুন।
  4. অদ্ভুত কিছু হলে কনসোলে typeof দিয়ে দেখুন আসলে কী টাইপ।
  5. হাসুন, তারপর গুগল করুন কেন এমন হলো। সবসময় একটা "কেন" থাকে।

জাভাস্ক্রিপ্ট সেই আত্মীয়ের মতো, যার কিছু অদ্ভুত অভ্যাস আছে, কিন্তু বিপদে সবার আগে এগিয়ে আসে। অদ্ভুত অভ্যাসগুলো চিনে নিন, তারপর বন্ধুত্ব করুন।

// related

// prefer the terminal?

Open the terminal blog and type read javascript-er-odbhut-achoron.