৮ জানুয়ারী, ২০২৩
পড়তে মিনিট লাগতে পারে

রহস্যময়ী জাভাস্ক্রিপ্টঃ [] + [] খালি স্ট্রিং(’’) হচ্ছে কেনো?

শেয়ার করুনঃ

আপনারা যদি কখনো ট্রাই করে থাকেন যে দুইটা খালি অ্যারের অ্যাডিশন(অথবা ক্লিয়ার বললে + ইউজ করলে) এর ফলাফল হয় খালি স্ট্রিং ''। এটা শুধুমাত্র দুইটা না, বরং যত ইচ্ছা খালি অ্যারে এরকম + দিতে অ্যাড করেন না কেন এটার ফলাফল সেই সেইম একই খালি স্ট্রিং '' দেখাবেঃ

[] + []
// ''

[] + [] + [] + [] + []
// '' 

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

আমরা যদি এখন কথামতো দেখি যে একটা খালি অ্যারে[] কে স্ট্রিং এ কনভার্ট করলে কি হয়ঃ

String([])
// ''     

এ কারণেই খালি অ্যারে [] যতই যোগ করেন এখানে আসলে খালি স্ট্রিংই হচ্ছেঃ

[] + []
// ''

'' + ''
// ''

এবার তাহলে বলেন তো অ্যারেগুলো যদি খালি না হয়ে এরকম [1, 2] + [3, 4] হতো তাহলে এর ফলাফল কি হবে? আসুন প্রথমে এদেরকে নিয়ম অনুযায়ী স্ট্রিং এ কনভার্ট করে দেখিঃ

String([1, 2]) 
//'1,2'

String([3, 4])
//'3,4'

তো শেষ পর্যন্ত String Concatenation হয়ে হিসেব-নিকেশ দাড়াচ্ছে এরকমঃ

'1,2' + '3,4'
// '1,23,4'

সেজন্যেই [1, 2] + [3, 4] এর ফলাফল '1,23,4' হবে, [’Hello’, ‘World’] + [’Hello’, ‘Bangladesh’] এর ফলাফল হবে 'Hello,WorldHello,Bangladesh’ ইত্যাদি ইত্যাদি...

ট্যাগঃ
শেয়ার করুনঃ

ক্রমানুসারে এই জাভাস্ক্রিপ্ট সিরিজঃ

জাভাস্ক্রিপ্ট ব্যাসিক
জাভাস্ক্রিপ্টঃ কি, কেন, কখন? জাভাস্ক্রিপ্টঃ কোথায় এবং কিভাবে ইউজ করা হয়? জাভাস্ক্রিপ্টঃ ব্যাসিক ক্রোম ডেভেলপার কন্সোল জাভাস্ক্রিপ্টঃ ভ্যারিয়েবল এবং ডাটা টাইপ জাভাস্ক্রিপ্টঃ অপারেটর নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ কন্ডিশনাল স্টেটমেন্ট নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ লুপ নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ অ্যারে নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ ব্যাসিক অবজেক্ট জাভাস্ক্রিপ্টঃ ব্যাসিক ফাংশন জাভাস্ক্রিপ্টঃ স্টেটমেন্ট আর এক্সপ্রেশন জাভাস্ক্রিপ্টঃ ড্রাই প্রিন্সিপ্যাল জাভাস্ক্রিপ্টঃ নাকি ইকমাস্ক্রিপ্ট? জাভাস্ক্রিপ্টঃ বিহ্যাইন্ড দ্যা সীন জাভাস্ক্রিপ্টঃ হোইস্টিং(Hoisting) নিয়ে ধারণা জাভাস্ক্রিপ্টঃ স্কোপ(Scope) নিয়ে ধারণা জাভাস্ক্রিপ্টঃ ক্লোজারস(Closures) নিয়ে ধারণা জাভাস্ক্রিপ্টঃ ইফি, Immediately Invoked Function Expressions (IIFE)
জাভাস্ক্রিপ্ট অ্যাডভান্স
জাভাস্ক্রিপ্ট অ্যাডভান্সঃ ‘this’ কীওয়ার্ড জাভাস্ক্রিপ্ট অ্যাডভান্সঃ call(), bind() এবং apply() মেথড জাভাস্ক্রিপ্ট অ্যাডভান্সঃ অবজেক্ট ওরিয়েন্টেড জাভাস্ক্রিপ্ট জাভাস্ক্রিপ্ট অ্যাডভান্সঃ ফাংশন কন্সট্রাকটর(Constructor) এবং ‘new’ কীওয়ার্ড জাভাস্ক্রিপ্ট অ্যাডভান্সঃ ইনহেরিট্যান্স (Inheritance) জাভাস্ক্রিপ্ট অ্যাডভান্সঃ স্ট্রিক্ট (Strict) মোড
জাভাস্ক্রিপ্ট ইএস ৬(ES6)
জাভাস্ক্রিপ্ট ইএস ৬(ES6): নতুন কি আছে? জাভাস্ক্রিপ্ট ইএস ৬(ES6): let এবং const দিয়ে ভ্যারিয়েবল ডিক্লেয়ার করা জাভাস্ক্রিপ্ট ইএস ৬(ES6):ইফি (Immediately Invoked Function Expressions) জাভাস্ক্রিপ্ট ইএস ৬(ES6): টেমপ্লেট লিটারেল(Template Literal) ও স্ট্রিং মেথড জাভাস্ক্রিপ্ট ইএস ৬(ES6): অ্যারো (Arrow) ফাংশন ও লেক্সিক্যাল(Lexical) ‘this’ কীওয়ার্ড জাভাস্ক্রিপ্ট ইএস ৬(ES6): অ্যারে জাভাস্ক্রিপ্ট ইএস ৬(ES6): স্প্রেড(Spread) অপারেটর জাভাস্ক্রিপ্ট ইএস ৬(ES6): ডি-স্ট্রাকচারিং (Destructuring) জাভাস্ক্রিপ্ট ইএস ৬(ES6): রেস্ট(Rest) প্যারামিটার জাভাস্ক্রিপ্ট ইএস ৬(ES6): ডিফল্ট(Default) প্যারামিটার জাভাস্ক্রিপ্ট ইএস ৬(ES6): ম্যাপ (Map) জাভাস্ক্রিপ্ট ইএস ৬(ES6): ক্লাস (Class) জাভাস্ক্রিপ্ট ইএস ৬(ES6): ক্লাস ও ইনহেরিট্যান্স (Inheritance) জাভাস্ক্রিপ্ট ইএস ৬(ES6): সব ইনভারোমেন্ট এ ইএস৬
নিত্যদিনের জাভাস্ক্রিপ্ট
নিত্যদিনের জাভাস্ক্রিপ্টঃ ফার্স্ট ক্লাস ফাংশন ও হাইয়ার অর্ডার ফাংশন নিত্যদিনের জাভাস্ক্রিপ্টঃ map(), filter() ও reduce() নিত্যদিনের জাভাস্ক্রিপ্টঃ some() ও every() মেথড নিত্যদিনের জাভাস্ক্রিপ্টঃ অবজেক্ট এ লুপ চালানো নিত্যদিনের জাভাস্ক্রিপ্টঃ ডট নোটেশন এবং ব্র্যাকেট নোটেশন নিত্যদিনের জাভাস্ক্রিপ্টঃ ম্যাথ (Math) অবজেক্ট নিত্যদিনের জাভাস্ক্রিপ্টঃ ডেট (Date) অবজেক্ট নিত্যদিনের জাভাস্ক্রিপ্টঃ লজিক্যাল অপারেটর অর (।।) এবং অ্যান্ড (&&) নিত্যদিনের জাভাস্ক্রিপ্টঃ কন্ডিশনাল/টার্নারি (Ternary) অপারেটর নিত্যদিনের জাভাস্ক্রিপ্টঃ রেগুলার এক্সপ্রেশন (Regular Expression) নিত্যদিনের জাভাস্ক্রিপ্টঃ এরর হ্যান্ডলিং (Error Handling) নিত্যদিনের জাভাস্ক্রিপ্টঃ ডেভেলপার কন্সোল (Console) নিত্যদিনের জাভাস্ক্রিপ্টঃ অ্যাসিনক্রোনাস (Asynchronous) নিত্যদিনের জাভাস্ক্রিপ্টঃ কলব্যাক(Callback) ফাংশন নিত্যদিনের জাভাস্ক্রিপ্টঃ প্রমিস (Promise) নিত্যদিনের জাভাস্ক্রিপ্টঃ async এবং await
রহস্যময়ী জাভাস্ক্রিপ্ট
রহস্যময়ী জাভাস্ক্রিপ্টঃ type of NaN === “number” কেনো? রহস্যময়ী জাভাস্ক্রিপ্টঃ 9 + '1’ সমান ‘91’, আবার 91 - ‘1’ সমান 90 হচ্ছে কিভাবে? রহস্যময়ী জাভাস্ক্রিপ্টঃ true + true + true === 3, true - true === 0 হচ্ছে কিভাবে? রহস্যময়ী জাভাস্ক্রিপ্টঃ [] === 0 মিথ্যা(false) হলেও [] == 0 আবার সত্য(true) হয় কিভাবে? রহস্যময়ী জাভাস্ক্রিপ্টঃ [] === ‘’ মিথ্যা(false) হলেও [] == ‘’ আবার সত্য(true) হয় কিভাবে? রহস্যময়ী জাভাস্ক্রিপ্টঃ [] + [] খালি স্ট্রিং(’’) হচ্ছে কেনো? রহস্যময়ী জাভাস্ক্রিপ্টঃ [] + {} আবার কেনো '[object Object]’ দেখাচ্ছে? রহস্যময়ী জাভাস্ক্রিপ্টঃ {} + [] আবার শূন্য(0) কেনো? রহস্যময়ী জাভাস্ক্রিপ্টঃ [] + {} === {} + [] কিভাবে সত্য true হচ্ছে?