JavaScriptBasics
Q4. What is the difference between == and === in JavaScript?
Loose ও strict equality-র মধ্যে পার্থক্য, type coercion কীভাবে কাজ করে — উদাহরণসহ।
== হলো loose equality — মান দুটো মিলিয়ে দেখার আগে প্রথমে type coercion করে নেয়, অর্থাৎ একটা ধরনকে অন্যটায় বদলে ফেলে। আর === হলো strict equality — type আর value দুটোই হুবহু এক হলে তবেই true।
== বনাম ===javascript
javascript
5 == "5"; // true — "5" কে সংখ্যায় বদলে দেওয়া হলো
5 === "5"; // false — একটি number, অন্যটি string
0 == ""; // true — "" এখন 0 হয়ে যায়
0 === ""; // false
null == undefined; // true
null === undefined; // falseপ্রথম উদাহরণটা ধাপে ধাপে: 5 একটি number, "5" একটি string। == ডান পাশের মানকে বাঁ পাশের ধরনে বদলে নেয়, তাই "5" হয়ে যায় 5 — ফলে true। কিন্তু === কোনো রূপান্তর করে না, তাই ধরন আলাদা হওয়াতেই false।
দুটি ব্যতিক্রম মনে রাখা দরকার — NaN নিজের সাথে সমান নয়, আর 0 ও -0 কে === সমান মনে করে।
NaN ও -0javascript
javascript
NaN === NaN; // false — এমন ফলাফল ইচ্ছাকৃত
Number.isNaN(NaN); // true — NaN চেক করার সঠিক উপায়
0 === -0; // true
Object.is(0, -0); // false| তুলনা | ফলাফল | কারণ |
|---|---|---|
5 == \"5\" | true | string কে number-এ coercion হয়েছে |
5 === \"5\" | false | ধরন আলাদা |
null == undefined | true | loose তুলনায় দুটো সমান ধরা হয় |
null === undefined | false | ধরন আলাদা |
NaN == NaN | false | NaN নিজেকেই সমান মনে করে না |
মনে রাখুন
প্রায় সবসময় === ব্যবহার করুন। ইচ্ছাকৃতভাবে coercion দরকার হলে বা null ও undefined দুটোই ধরতে চাইলে তখনই == লিখুন — কিন্তু তখন ইচ্ছাকৃত হিসেবে।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।