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