ডেটা টাইপ স্বয়ংক্রিয় রূপান্তর
আপনি ইতিমধ্যে জানেন, জাভাস্ক্রিপ্টে স্ট্রিংগুলি উদ্ধৃতি চিহ্নের মধ্যে নেওয়া উচিত। এমন হতে পারে যে স্ট্রিংয়ের সমস্ত অক্ষরই হবে সংখ্যা:
let a = '123';
এই ক্ষেত্রে, চলরাশি a ও একটি
স্ট্রিং, কিন্তু একটি সূক্ষ্মতা সহ।
সূক্ষ্মতাটি নিম্নরূপ: যদি সংখ্যা সহ একটি স্ট্রিং এর উপর কোন গাণিতিক অপারেশন সম্পাদন করা হয় - তাহলে এই অপারেশনটি এমনভাবে সম্পাদিত হবে যেন আমাদের সত্যিই সংখ্যা আছে, স্ট্রিং নেই:
alert('2' * '3'); // 6 প্রদর্শন করবে
এই ক্ষেত্রে, জাভাস্ক্রিপ্ট দেখতে পায় যে আমরা স্ট্রিংয়ের জন্য অননুমোদিত, কিন্তু সংখ্যার জন্য অনুমোদিত একটি অপারেশন সম্পাদন করার চেষ্টা করছি।
এটি আরও দেখতে পায় যে, কার্যত আমাদের স্ট্রিংগুলি - উদ্ধৃতি চিহ্নের মধ্যে থাকা সংখ্যা। তাই জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে এই স্ট্রিংগুলিকে সংখ্যায় রূপান্তরিত করে এবং তাদের উপর সংশ্লিষ্ট গাণিতিক অপারেশন সম্পাদন করে।
এটি কাজ করে, যদি আমাদের স্ট্রিংগুলিতে শুধুমাত্র
সংখ্যা থাকে। সেখানে যদি অন্তত একটি বর্ণও থাকে
- জাভাস্ক্রিপ্ট অপারেশনটিকে ভুল বলে বিবেচনা করবে
এবং এর ফলাফল করবে NaN মান:
alert('2' * '3s'); // NaN প্রদর্শন করবে
তাছাড়া, স্বয়ংক্রিয় রূপান্তর ঘটে, যদি অপারেশনটি গাণিতিকভাবে সঠিক হয়, কিন্তু স্ট্রিংয়ের জন্য অননুমোদিত।
উদাহরণস্বরূপ, স্ট্রিংগুলি গুণ, ভাগ, বিয়োগ করা যায় না (কিন্তু সংখ্যা যায়), তাই সকল such অপারেশনে সংখ্যা সহ স্ট্রিংগুলির স্বয়ংক্রিয় রূপান্তর সংখ্যায় হবে।
যাইহোক, স্ট্রিংগুলি, সংখ্যার মতো, যোগ করা যায়
+ অপারেটর ব্যবহার করে। এর মানে,
যে যোগের ক্ষেত্রে স্বয়ংক্রিয় রূপান্তর
হবে না:
let a = '1' + '2';
alert(a); // '12' প্রদর্শন করবে - স্ট্রিং যোগ হয়েছে
যদি একটি যোগ্য সংখ্যা হয়, এবং অন্যটি - স্ট্রিং হয়, তাহলে সর্বদা স্ট্রিং জয়ী হয়:
let a = 1 + '2';
alert(a); // '12' প্রদর্শন করবে
এমন ক্ষেত্রে, জাভাস্ক্রিপ্ট, বিপরীতভাবে, স্বয়ংক্রিয়ভাবে সংখ্যাগুলিকে স্ট্রিংয়ে রূপান্তরিত করে এবং স্ট্রিংয়ের যোগ সম্পাদন করে।
যাইহোক, সূক্ষ্মতা আছে, যখন যোগ্য দুইটির বেশি হয়: এই ক্ষেত্রে একটি নির্দিষ্ট টাইপে রূপান্তর অপারেশন সম্পাদনের ক্রমের উপর নির্ভর করে।
নিম্নলিখিত উদাহরণে, প্রথমে 2 এবং 3
সংখ্যা হিসাবে যোগ হবে, এবং তারপর ফলাফলটি
স্ট্রিং '1' এর সাথে যোগ হবে
ইতিমধ্যেই স্ট্রিং '5' হিসাবে,
যা শেষ পর্যন্ত স্ট্রিং '15' দেবে:
let a = '1' + (2 + 3);
alert(a); // '15' প্রদর্শন করবে
যদি বন্ধনী সরানো হয়, তাহলে সবকিছু যোগ হবে
বাম থেকে ডানে। অর্থাৎ প্রথমে স্ট্রিং '1'
সংখ্যা 2 এর সাথে যোগ হবে এবং ফলাফল
হবে স্ট্রিং '12'। তারপর এই
স্ট্রিংটির সাথে সংখ্যা 3 যোগ হবে এবং ফলাফল
হবে স্ট্রিং '123':
let a = '1' + 2 + 3;
alert(a); // '123' প্রদর্শন করবে
কিন্তু নিম্নলিখিত উদাহরণে সংখ্যা 2
এবং 3 শুরুতে লেখা আছে, তাই প্রথমে
তারা সংখ্যা হিসাবে যোগ হবে, ফলাফল দিয়ে
সংখ্যা 5, এবং তারপর এই সংখ্যার সাথে যোগ হবে
স্ট্রিং '1', শেষ পর্যন্ত স্ট্রিং '51' দেবে:
let a = 2 + 3 + '1';
alert(a); // '51' প্রদর্শন করবে
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' + '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' + 2;
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = 5 + '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = 5 + 2;
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' * '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' - '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' / '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' % '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5s' * '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5s' + '2';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = (-'5') + (-'2');
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' * 1 + '2' * 1;
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '5' * '1' + '2' * '1';
alert(a);
কোড চালু না করে, নির্ধারণ করুন, কী স্ক্রিনে প্রদর্শিত হবে:
let a = '' + 3 + 1;
alert(a);