আপনারা অনেকসময় খেয়াল করেছেন 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