কম্পিউটার

জাভাস্ক্রিপ্ট:কেন % অপারেটর স্ট্রিংগুলিতে কাজ করে? - (টাইপ জবরদস্তি)


ধরা যাক আমাদের এখানে একটি কোড স্নিপেট রয়েছে যা কিছু চমকপ্রদ ফলাফল তৈরি করে। প্রথমত, আমরা দেখতে পাই যে মডুলো অপারেটরটি স্ট্রিংগুলির সাথেও ভাল কাজ করছে (আশ্চর্যজনকভাবে)। দ্বিতীয়ত, দুটি স্ট্রিং এর সংযোগ বিশ্রী ফলাফল দেয়।

আমাদের ব্যাখ্যা করতে হবে কেন জাভাস্ক্রিপ্ট তা করে?

এখানে সমস্যা কোড -

উদাহরণ

const numStr = '127';
const result = numStr % 5;
const firstName = 'Armaan';
const lastName = 'Malik';
const fullName = firstName + + lastName;
console.log('modulo result: ', result);
console.log('full name: ', fullName);

আউটপুট

modulo result: 2
full name: ArmaanNaN

কোডে ঝাঁপিয়ে পড়ার আগে, আসুন প্রথমে জাভাস্ক্রিপ্ট → টাইপ জবরদস্তির অন্যতম মৌলিক বিষয় সম্পর্কে একটু জেনে নিই।

টাইপ জবরদস্তি

মূলত, টাইপ জবরদস্তি হল জাভাস্ক্রিপ্ট কম্পাইলারদের দ্বারা একটি ডেটা টাইপকে অন্যটিতে পরিবর্তন করার জন্য ব্যবহৃত একটি উপায়। বৈধ ধরনের জবরদস্তির উদাহরণগুলি স্ট্রিংকে বুলিয়ানে, সংখ্যাকে স্ট্রিংয়ে এবং আরও অনেক কিছুতে পরিবর্তন করা হবে৷

টাইপ জবরদস্তি একটি খুব বিস্তৃত বিষয় এবং এই সমাধানের দৈর্ঘ্য সীমাবদ্ধ করতে আমরা শুধুমাত্র এই কোড স্নিপেটে ব্যবহৃত জিনিসগুলি অন্বেষণ করব। দুই ধরনের জবরদস্তির মধ্যে, যেটি কম্পাইলার দ্বারা স্বয়ংক্রিয়ভাবে করা হয় তাকে বলা হয় অন্তর্নিহিত টাইপ জবরদস্তি।

এটি অনুসরণ করে -

যেকোন ডেটা টাইপ (আদিম বা অ-আদিম) নিহিতভাবে বাধ্য করা হবে −

  • স্ট্রিং (যখন বাইনারি + অপারেটরের সাথে ব্যবহার করা হয়)।

  • সংখ্যা (যখন গাণিতিক অপারেটরের সাথে ব্যবহার করা হয় যেমন +, -, /, *,% এবং শুধুমাত্র unary +triggers

সংখ্যা জবরদস্তি বাইনারি নয় +, যখন তুলনা অপারেটর, বিটওয়াইজ অপারেটর বা লুজ ইকুইলিটি অপারেটরের সাথে ব্যবহার করা হয়[==])

  • বুলিয়ান (যখন লজিক্যাল অপারেটর এবং |! )

    এর সাথে ব্যবহার করা হয়

***আরেকটি লক্ষণীয় বিষয় হল যে unary (+) অপারেটরের অগ্রাধিকার বাইনারি (+) অপারেটরের চেয়ে বেশি।

কোড ব্যাখ্যা

সুতরাং, এই বিষয়গুলি পরিষ্কার করে, আসুন কোডে চলে যাই এবং এটিকে লাইন দ্বারা লাইন করে যাই -

Line 2 → result = '127' % 5;

অন্তর্নিহিত জবরদস্তি % অপারেটরকে গ্রহণ করে এবং দেখে, যার কারণে এটি স্ট্রিং '127' কে 127 নম্বরে রূপান্তরিত করে এবং 2 ফলাফলে সংরক্ষিত হয় -

Line 5 → fullName = firstName + + lastName;
fullName = firstName + (+lastName);

স্বাভাবিক নিয়মে, গণনাটি বাম থেকে ডানে সংঘটিত হত কিন্তু ইউনারি অপারেটরের প্রাধান্যের কারণে, এটি প্রথমে নম্বরে গণনা করা হয় এবং অপারেশনটি এরকম হয় -

fullName = firstName + NaN;

এবং তারপর

fullName = ArmaanNaN

  1. জাভাস্ক্রিপ্ট স্প্রেড অপারেটর

  2. জাভাস্ক্রিপ্ট টাইপ জবরদস্তি কি?

  3. জাভাস্ক্রিপ্টে টেমপ্লেট স্ট্রিং।

  4. কেন জাভাস্ক্রিপ্টে 'নির্বাচন' উপাদানে ইভেন্টলিস্টেনার যোগ করে কাজ করে না?