রহস্যময়ী জাভাস্ক্রিপ্টঃ true + true + true === 3, true - true === 0 হচ্ছে কিভাবে?

আপনারা অনেকসময় খেয়াল করেছেন true + true সমান সমান 2 হচ্ছে, বা এখানে যতটা বুলিয়ান ভ্যালু true একসাথে + অপারেটর দিয়ে যুক্ত করছেন, যোগফল ঠিক ততোটাই দেখাচ্ছেঃ

true + true + true === 3
// true

true + true
// 2

এটা হওয়ার কারণও মূলত সেই আগের পর্বে উল্লেখিত কারণেই। ইকমাস্ক্রিপ্ট এর স্ট্যান্ডার্ড অনুযায়ী + অপারেটরটার দুইরকমের কাজ করতে পারে যখন দুই অপারেন্ডের মাঝখানে বসে। একটা হচ্ছে যোগ(Addiiton) করা, আরেকটা হচ্ছে স্ট্রিং যুক্ত(String Concatenation) করা।

এই প্লাস + অপারেটরটি যখন দুইটা বুলিয়ান এর মাঝখানে বসবে, তখন সেটা টাইপ কোয়ারশন হয়ে নাম্বারে কনভার্ট হয়ে যাবে। তাই উপরে উল্লেখিত জায়গায় true যেহেতু বুলিয়ান তাই ইকমাস্ক্রিপ্ট এর স্ট্যান্ডার্ড অনুযায়ী এখানে + অপারেটরটি যোগ করার জন্যেই ব্যবহৃত হবে এবং true নাম্বার টাইপে কনভার্ট হয়ে যাবেঃ

Number(true)
// 1

দেখতেই পাচ্ছেন true কে নাম্বার টাইপে টাইপ কোয়ারশন করলে সেটার ভ্যালু 1 দেখাচ্ছে, আশা করি এখানেই ক্লিয়ার হয়ে গেছে যে কেন true + true এর ফলাফল এমন দেখাচ্ছে। এখানে মূলত সবগুলো বুলিয়ান true নাম্বারে টাইপ কোয়ারশন হয়ে একেকটার ভ্যালু 1 হয়ে গিয়েছেঃ

1 + 1 + 1 === 3
// true

1 + 1
// 2

তো ৩ টা 1 যোগ করলে অবশ্যই সেটার ফলাফল 3 হবে, এবং ২ টা যোগ করলে সেটার ফলাফল 2 হবে।

একইভাবে যখন আমরা একটা বুলিয়ান true থেকে আরেকটা বুলিয়ান true মাইনাস - করছি তখন সেটার ফলাফল 0 হয়ে যাচ্ছে, কারণ সেই একই। এখানে বুলিয়ান true গুলো - অপারেটরের কারণে বিয়োগ হয়েছে(স্পেক), টাইপ কোয়ারশনের কারণে বুলিয়ান true গুলোর ভ্যালু 1 হয়ে গিয়েছে। ফলাফলে রেজাল্ট প্লেইন 1 থেকে 1 বিয়োগ হয়ে দেখাচ্ছেঃ

true - true === 0
// true

1 - 1 === 0
// true

আশা করি এই দুইটা কেস আপনাদের এখন একদম ক্লিয়ার। তবে মনে প্রশ্ন জাগতেই পারে যে false ও তো একটা বুলিয়ান, তো সেক্ষেত্রেও কি ফলাফল সেইমই হবে? জি ঘটনা সেইম, তবে false এ টাইপ কোয়ারশন হয়ে নাম্বারে গেলে এটার ভ্যালু 1 হয় না, বরং এটা 0 হবেঃ

Number(false)
// 0

সেজন্যে আপনি যতটা false+ যোগ করেন, ফলাফল 0ই হবেঃ

false + false + false + false
// 0 

0 + 0 + 0 + 0
// 0

তেমনি - মাইনাস করলেও সেই 0ই হবেঃ

false - false
// 0

0 - 0
// 0 

শেয়ার করুন

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

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

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