কম্পিউটার

জাভাস্ক্রিপ্টে কঠোর সমতা বনাম লুজ ইকুয়ালিটি অপারেটরের মধ্যে পার্থক্য কী?

জাভাস্ক্রিপ্টে কঠোর সমতা বনাম আলগা সমতা অপারেটরগুলির মধ্যে পার্থক্য এবং কেন এটি গুরুত্বপূর্ণ তা সম্পর্কে জানুন৷

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

আপনার কনসোলে নিম্নলিখিত কোড চালানোর চেষ্টা করুন:

let a = 4 // number
let b = "4" // string

console.log(a == b) // output: true

কেন জাভাস্ক্রিপ্ট বলে যে উপরেরটি সত্য যখন এটা না? আমাদের সংখ্যার প্রকারের একটি মান আছে স্ট্রিং প্রকারের একটি মানের সাথে তুলনা করা হচ্ছে — তাহলে তারা কিভাবে সমান মান হতে পারে?

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

এই প্রক্রিয়াটিকে বলা হয় টাইপ জবরদস্তি (যখন দুটি মান তুলনা করা হয় পরে এগুলিকে একটি সাধারণ প্রকারে রূপান্তর করার চেষ্টা করা হচ্ছে)।

সুতরাং উপরের উদাহরণে, true এর আউটপুট সঠিক, কারণ মানগুলি তুলনা করার আগে, তাদের মানের প্রকারগুলি একই হতে রূপান্তরিত হয়।

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

আমি একমত, কিন্তু এটা কিভাবে হয়. যেটা গুরুত্বপূর্ণ তা হল আপনি জাভাস্ক্রিপ্টের এই অসুবিধাজনক "আড়ম্বর" সম্পর্কে সচেতন।

এবং সেখানেই কঠোর সমতা অপারেটর === আসে এবং দিনটি সংরক্ষণ করে কারণ এটি মান প্রকারকে রূপান্তর করে না, এটি কঠোরভাবে মান প্রকারের তুলনা করে এবং তারপর সমতা পরীক্ষা করে:

let a = 4
let b = "4"

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

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

অ-কঠোর == থেকে ভিন্ন অপারেটর, কঠোর === অপারেটর আপনাকে অনুমানযোগ্য আউটপুট দেয়, যে কারণে বেশিরভাগ বিকাশকারীরা == ব্যবহার করার বিরুদ্ধে পরামর্শ দেয় .

কোনও ভাল কারণ আছে কি জাভাস্ক্রিপ্টে অ-কঠোর তুলনা অপারেটর ব্যবহার করতে?

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


  1. জাভাস্ক্রিপ্টে কঠোর সমতা বনাম আলগা সমতা।

  2. জাভাস্ক্রিপ্টে আলগা সমতা

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

  4. পাইথনে =এবং ==অপারেটরগুলির মধ্যে পার্থক্য কী?