রহস্যময়ী জাভাস্ক্রিপ্টঃ [] === ‘’ মিথ্যা(false) হলেও [] == ‘’ আবার সত্য(true) হয় কিভাবে?

আপনারা কখনো কখনো হয়তো এরকম জিনিসও দেখেছেন যে [] === ‘’, false হচ্ছে, কিন্তু [] == ‘’ আবার true হচ্ছে। ব্যাপারটা আরো কনফিউজড হয়ে গেলো কারণ গত পর্বে এরকমই আরেকটা আমরা দেখেছিলাম। কিন্তু এবার দেখেন এগুলো খালি স্ট্রিং '' এর সাথেও অলমোস্ট সেইম আচরণই করছেঃ

[] === ''
// false

[] == ''
// true

এটার আর পূর্বের টপিকের কারণ একদমই সেইম, তারপরেও মনে রাখার সুবিধার্থে আবারো মেনশন করলাম এখানে যে এটার পেছনেও সেই জাভাস্ক্রিপ্ট এর দুইটাওয়ালা == ও তিনটাওয়ালা === ইকুয়ালেটি অপারেটরের কারসাজি কাজ করছে। আর সেই সাথে টাইপ কোয়ারশন তো আছেই!

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

String([])
// ''

ঠিক এই কারণেই == অপারেটর ইউজ করে ‘’ এর সাথে খালি অ্যারে [] কে তুলনা করায় সেটা সত্য true হয়েছেঃ

[] == ''
// true

'' == ''
// true

অন্যদিকে === অপারেটরটা যেহেতু স্ট্রিক্ট ইকুয়ালেটি চেকে ইউজ হয়, তাই সেক্ষেত্রে অবশ্যই একটা অ্যারে [], একটা খালি স্ট্রিং ‘’ এর সমান নয়, তাই মিথ্যা false দেখাচ্ছেঃ

[] === ''
// false

শেয়ার করুন

লেখাটি ভাল লাগলে সোশ্যাল মিডিয়ায় শেয়ার করুন। আপনার কলিগ, বন্ধু কিংবা প্রিয় কারও কাজে লাগতে পারে। জানেন তো, শেয়ারিং ইজ কেয়ারিং!

সাবস্ক্রিপশন সেন্টার

প্রতিদিন ওয়েবসাইটে আসা আপনার জন্য কষ্টকর হতে পারে। তাই যখনই আমি নতুন ব্লগ পোস্ট, সিরিজ, বই বা ভিডিও পাবলিশ করব,
তখনই তা আপনার ইমেইলে পেতে সাবস্ক্রাইব করুন। নো স্প্যামিং প্রমিজ!