Q14. Explain type coercion in JavaScript with examples.
ইঞ্জিন কখন নিজে থেকে ধরন বদলে দেয়, implicit ও explicit coercion-এর পার্থক্য।
Type coercion মানে JavaScript নিজে থেকে একটা মানকে অন্য ধরনে বদলে দেওয়া। যেখানে নিজে থেকে বদলায় সেটি implicit, আর আপনি Number(), String(), Boolean() দিয়ে বদলালে সেটি explicit coercion।
সবচেয়ে সাধারণ implicit coercion দেখা যায় + অপারেটরে — এটি দুই পাশকে যোগ করতে চায়, তাই একটা পাশ string হলে সেটি বাকি দুটোকে string বানিয়ে জোড়া লাগিয়ে দেয়।
console.log(1 + 2); // 3 — দুটোই number
console.log("1" + 2); // "12" — string বানিয়ে জোড়া
console.log(1 + "2"); // "12"
console.log(1 - 2); // -1 — সংখ্যা হিসাব
console.log("5" - 2); // 3 — "5" সংখ্যায় বদলে গেল
console.log(true + 1); // 2 — true এর মান 1+ বাদি সব অপারেটার সাধারণত সংখ্যায় রূপান্তর করে, তাই স্ট্রিং 5 বিয়ে 2 থেকে 3 বের হয়, কিন্তু + হলে দুটো জোড়া লেগে স্ট্রিং 52 হয়।
অন্য জায়গায় == ও !, if-এর শর্তেও coercion ঘটে। শর্তে যা আসে তা সবসময় সত্য কিন্তু।
// truthy ও falsy
if ("hello") console.log("truthy");
if ("") console.log("খালি string falsy");
if (0) console.log("শূন্য falsy");
if (NaN) console.log("NaN falsy");
if (null) console.log("null falsy");
if (undefined) console.log("undefined falsy");
if ("0") console.log("হ্যাঁ — '0' truthy");
if ([]) console.log("হ্যাঁ — খালি array truthy");explicit coercion-এর জন্য তিনটি ফাংশন সবচেয়ে বেশি লাগে।
Number("42"); // 42
Number(""); // 0 — মনে রাখুন
Number("42px"); // NaN
Number(true); // 1
String(42); // "42"
String(null); // "null"
Boolean(0); // false
Boolean("hello"); // true
Boolean(""); // false// String() বনাম + ব্যবহার
console.log(String(1) + 2); // "12" — জোড়া
console.log(1 + 2 + "3"); // "33" — বাম থেকে হিসাব, তারপর string
console.log("3" + 2 + 1); // "321"| ইনপুট | truthy | falsy |
|---|---|---|
| string | খালি না হলে | "" |
| number | 0 ছাড়া | 0, NaN |
| object/array | সবসময় | — |
null, undefined | — | দুটোই |
coercion লুকানো থাকলে বাগের কারণ খুঁজে পাওয়া কঠিন। তাই স্পষ্ট লিখুন — লিখতে চাইলে Number(x), না লিখতে চাইলে ভালো ফলাফল দেখে ?? ব্যবহার করুন।