𝐉𝐚𝐯𝐚𝐒𝐜𝐫𝐢𝐩𝐭 — এ কেন [ ] == ![ ] এর ফলাফল 𝐭𝐫𝐮𝐞?
সহজ কথায় বলতে গেলে,
জাভাস্ক্রিপ্ট টাইপ 𝒄𝒐𝒏𝒗𝒆𝒓𝒔𝒂𝒕𝒊𝒐𝒏 ও 𝒄𝒐𝒆𝒓𝒄𝒊𝒐𝒏 নিয়ে কাজ করে বিধায় [ ] ==! [ ] রিটার্ন করে।
তাহলে এখন কথা হলো 𝐜𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧 ও 𝐜𝐨𝐞𝐫𝐜𝐢𝐨𝐧 কি?
জাভাস্ক্রিপ্ট এ conversation ও coercion এর কাজ হলো, এক ধরনের ডেটা টাইপ থেকে অন্য ডেটা টাইপ এ পরিবর্তন হওয়া।
𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐢𝐨𝐧
যখন প্রোগ্রামার ইচ্ছাকৃতভাবে এক ডেটা টাইপ থেকে অন্য ডেটা টাইপ এ পরিবর্তন করে তখন এটিকে explicit conversion অথবা টাইপ কাস্টিং ও বলা হয়।
যেমন,
let num = “123”;
let convertedNum = Number(num);
“এটি স্ট্রিং “123” কে নম্বর 123-এ রূপান্তর করে”
𝐂𝐨𝐞𝐫𝐜𝐢𝐨𝐧
কোয়ের্কিং তখন ঘটে, যখন স্বয়ংক্রিয় ভাবে javascript এক ধরনের ডেটা টাইপ থেকে অন্য ডেটা টাইপ এ পরিবর্তন করে। এটিকে 𝒊𝒎𝒑𝒍𝒊𝒄𝒊𝒕 𝒄𝒐𝒏𝒗𝒆𝒓𝒔𝒊𝒐𝒏 ও বলা হয়।
যেমন,
console.log(5 + “10”);
answer: “510” |> (সংখ্যা 5 কে স্ট্রিং-এ রূপান্তর করা হয়েছে)
সাধারণত 𝐜𝐨𝐞𝐫𝐜𝐢𝐨𝐧 দুই ধরনের হয়,
- 𝐓𝐫𝐮𝐭𝐡𝐲 এবং 𝐅𝐚𝐥𝐬𝐲 ভ্যালু
যেমন,
“”, 0, null, undefined, NaN এইসব হলো falsy ভ্যালু।
বাকিসব ভ্যালু হলো truthy।
- 𝐄𝐪𝐮𝐚𝐥𝐢𝐭𝐲 𝐂𝐨𝐞𝐫𝐜𝐢𝐨𝐧
এইটা হলো == অপারেটর, এটা দুই ভ্যালুর মধ্যে তুলনা করতে ব্যাবহার করা হয়
— — — — — —
— — — — — —
[🧠] ==! [🧠] কেন true রিটার্ন করে চলুন পেট ফোড়া করে দেখা যাক,
![ ] কেন false হয় 🤷♂️
[ ] এলো একটি ফাঁকা অ্যারে, এটি একটি ট্রুথি ভ্যালু।
অপরদিকে ! এই অপারেটর কাজ করে বেকু মেশিন এর মতো সবকিছু উল্টায় ফালায়, ফলে এর মান হয় false,
এতে বোঝা যায়! [ ] এর মান হলো false
আবার [ ] == false কেন হয় 🤷♂️
যখন == ব্যাবহার করা হয়, তখন javascript এর নিয়ম অনুযায়ী কনভার্সন ঘটে,
আর আমরা আগেই দেখেছি যে কনভার্সন হলে এক ডেটা টাইপ থেকে অন্য ডেটা টাইপ এ পরিবর্তন হয়,
ফলে এইখানে [ ] এবং false, একই টাইপ এ রুপান্তর হয়ে যায়।
একইভাবে false কে number টাইপ এ রুপান্তর করলে তা 0 হয়ে যায়।
এখন যদি ফাঁকা [ ] কে নম্বর এ পরিবর্তন করা হয়, তখন এটি 0 হয়ে যায়
আর 0 == 0 যদি তুলনা করা হয় তখন আর কনভার্সন করার দরকার পরে না দুইটাই নম্বর তাই এর মান true
তাহলে দেখা যায়, [ ] == ![ ] true হয়
জাভাস্ক্রিপ্ট ভেতরে ভেতরে [ ] কে কনভার্সন করে 0 বানায়, আর আমারা যানি ![ ] এর মান false, যা পরে কনভার্সন হয়ে 0 তে রুপান্তর হয়ে যায়। এতে দুইপাশের মান য়ে যায় 0,
আমরা আগেই দেখেছি যে Number একই হলে conversion এর দরকার পরে না, তাই 0 == 0 tru হয়ে যায়।
মূলত এটি টাইপ কনভার্সন এর একটি উদাহরণ।
এখানে ভেতরে ভেতরে javascript নিজে নিজে ডেটা টাইপ পরিবর্তন করে নেয়।
কোন কিছু ভুল হলে কমেন্টে জানিয়ে দিতে পারেন, আমি একজন Student মাত্র শিখে নিবো।
ধন্যবাদ
Top comments (0)