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

জাভাস্ক্রিপ্টে স্ট্রিক্ট ইকুয়ালিটি বনাম লুজ ইকুয়ালিটি অপারেটর পার্থক্য

জাভাস্ক্রিপ্টে স্ট্রিক্ট ইকুয়ালিটি vs লুজ ইকুয়ালিটি অপারেটরের পার্থক্য এবং কেন এটি গুরুত্বপূর্ণ তা শিখুন।

জাভাস্ক্রিপ্টে, আপনি ভ্যালু তুলনার জন্য দুটি ইকুয়ালিটি অপারেটর ব্যবহার করতে পারেন, লুজ ইকুয়ালিটি অপারেটর == (ডাবল ইকুয়ালস) এবং স্ট্রিক্ট ইকুয়ালিটি অপারেটর === (ট্রিপল ইকুয়ালস)। সেগুলো সারফেসে একই দেখতে পারে, কিন্তু সেগুলো একই নয়, এবং পার্থক্য বুঝা গুরুত্বপূর্ণ কারণ যদি আপনি না বুঝেন, তবে আপনি বাগে ফंसতে পারেন।

নিচের কোডটি আপনার কনসোলে রান করে দেখুন:

let a = 4 // number let b = "4" // string console.log(a == b) // output: true

জাভাস্ক্রিপ্ট কেন উপরের কোডকে true বলে जबकि সেটি সত্য নয়? আমাদের কাছে নাম্বার টাইপের একটি ভ্যালু আছে যা স্ট্রিং টাইপের একটি ভ্যালুর সাথে তুলনা হচ্ছে — তাহলে তারা কীভাবে সমান ভ্যালু হতে পারে?

এটি হয় কারণ আপনি যখন লুজ ইকুয়ালিটি অপারেটর == ব্যবহার করেন, এটি অপারেন্ডগুলোকে একই টাইপে কনভার্ট করে (যদি সেগুলো ইতিমধ্যে একই টাইপের না হয়), এবং তারপর তাদের ভ্যালু তুলনা করে।

এই প্রক্রিয়াকে টাইপ কোэрশন বলা হয় (যখন দুটি ভ্যালু একটি কমন টাইপে কনভার্ট করার পরেও তুলনা করা হয়)।

তাই উপরের উদাহরণে, true আউটপুট সঠিক, কারণ ভ্যালুগুলো তুলনা করার আগে, তাদের ভ্যালু টাইপগুলো একই করার জন্য কনভার্ট করা হয়েছে।

ওহ, এটা তো বোকামি!

আমি সাদা মতামত, কিন্তু এটিই সত্য। গুরুত্বপূর্ণ হলো আপনি এই অসুবিধাজনক জাভাস্ক্রিপ্ট "quirk"-এর সম্পর্কে অবগত থাকেন।

এখানেই স্ট্রিক্ট ইকুয়ালিটি অপারেটর === দিন বাঁচাতে আসে কারণ এটি ভ্যালু টাইপ কনভার্ট করে না, এটি স্ট্রিক্টলি ভ্যালু টাইপগুলো তুলনা করে এবং তারপর ইকুয়ালিটি চেক করে:

let a = 4 let b = "4" console.log(a === b) // output: false

এখন আমরা false পাই, কারণ যদিও দুটি ভেরিয়েবল (a & b) "4" ভ্যালু ধারণ করে, অপারেন্ডগুলো ভিন্ন ভ্যালু টাইপের (a হলো নাম্বার ভ্যালু, b হলো স্ট্রিং ভ্যালু)।

নন-স্ট্রিক্ট == অপারেটরের বিপরীতে, স্ট্রিক্ট === অপারেটর আপনাকে প্রেডিক্টেবল আউটপুট দেয়, এইीलिये অধিকাংশ ডেভেলপার == ব্যবহার না করার পরামর্শ দেন।

জাভাস্ক্রিপ্টে নন-স্ট্রিক্ট কম্পারিজন অপারেটর ব্যবহার করার কখনো ভালো কারণ আছে কি?

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


  1. জাভাস্ক্রিপ্টে স্ট্রিক্ট ইকুয়ালিটি বনাম লুজ ইকুয়ালিটি

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

  3. = এবং := অ্যাসাইনমেন্ট অপারেটরের পার্থক্য কী?

  4. পাইথন অপারেটর = এবং ==-এর পার্থক্য কী?