ECMAScript টাইপ কনভারশন

সবকটি প্রোগ্রামিং ভাষার সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলির মধ্যে একটি হল টাইপ রূপান্তর করার ক্ষমতা。

ECMAScript-এর উন্নয়নকারীকে বেশ কিছু সহজ টাইপ রূপান্তর পদ্ধতি দেয়।

সবকটি টাইপই সহজ রূপান্তর পদ্ধতি রাখে, এবং কয়েকটি সার্বজনীন পদ্ধতি সহজেই জটিল রূপান্তরের জন্য ব্যবহার করা যেতে পারে। কোনও কোনও ক্ষেত্রে, ECMAScript-এ টাইপ রূপান্তর একটি সহজ পদক্ষেপ

স্ট্রিং হিসাবে রূপান্তর

ECMAScript-এর Boolean মান, সংখ্যা এবং String-এর মৌলিক মানের আদর্শ এটা যে তারা মিথ্যা অবজেক্ট, যার মানে তারা এক্সটার্নাল প্রতিভা এবং পদ্ধতি রাখে।

যেমন, String-এর দৈর্ঘ্য পাওয়ার জন্য, নিচের কোডটি ব্যবহার করা যেতে পারে:

var sColor = "red";
alert(sColor.length);	// আউটপুট "3"

যদিও "red" মৌলিক টাইপের String, এটা হয়তো length প্রতিভা রাখে, যা স্ট্রিং আকার সংরক্ষণ করে।

সমগ্রে, ৩টি প্রধান মৌলিক টাইপ বলা Boolean মান, সংখ্যা এবং String মান সবকেই toString() মথদন্ডকারী থাকে, তাদের মানকে স্ট্রিং হিসাবে রূপান্তর করতে পারে।

সুচনা:আপনি হয়তো জিজ্ঞাসা করবেন,

Boolean 类型的 toString() 方法只是输出 "true" 或 "false",结果由变量的值决定:

var bFound = false;
alert(bFound.toString());	// 输出 "false"

Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式基模式。采用默认模式,toString() 方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学计数法),如下所示:

var iNum1 = 10;
var iNum2 = 10.0;
alert(iNum1.toString());	// 输出 "10"
alert(iNum2.toString());	// 输出 "10"

মন্তব্য:在默认模式中,无论最初采用什么表示法声明数字,Number 类型的 toString() 方法返回的都是数字的十进制表示。因此,以八进制或十六进制字面量形式声明的数字输出的都是十进制形式的。

采用 Number 类型的 toString() 方法的基模式,可以用不同的输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16。

这只是要转换成的基数的另一种加法,它是 toString() 方法的参数:

var iNum = 10;
alert(iNum.toString(2));	// 输出 "1010"
alert(iNum.toString(8));	// 输出 "12"
alert(iNum.toString(16));	// 输出 "A"

在前面的示例中,数字 10 以 3 种不同的形式输出了,即二进制形式、八进制形式和十六进制形式。HTML 使用十六进制表示每种颜色,在 HTML 中处理数字时这种功能非常有用。

মন্তব্য:数字调用 toString(10) 与调用 toString() 相同,它们返回的都是该数字的十进制形式。

参阅:

দেখুন JavaScript রেফারেন্স হান্ডবুকtoString() 方法的详细信息提供如下:

নম্বর কনভার্ট

ECMAScript ECMAScript দুইটি নম্বর কনভার্ট করার মধ্যে, যেমন parseInt() এবং parseFloat()

আপনি যেমন চিনতে পারেন, প্রথমটি মানকে ইন্টিজারে কনভার্ট করে, দ্বিতীয়টি মানকে ফ্লোটিং পয়েন্টে কনভার্ট করে। এই মথড়গুলি String টাইপের জন্যই কার্যকর হয়; অন্য কোনও টাইপের জন্যই তারা NaN ফলাফল ফেরৎ দেবে

parseInt()

parseInt() এবং parseFloat() মথড়গুলি স্ট্রিংকে নম্বর মানের কীভাবে হয়েছে তা নিয়ে পরিশীলন করবে এমন প্রথমে

parseInt() মথড় প্রথমে 0 নিউক্লিয়াসের চরিত্রকে দেখে, সেটা একটি বৈধ সংখ্যা হলো কি না; না হলে, এই মথড়টি NaN ফলাফল ফেরৎ দেবে এবং অন্য কোনও কাজ করবে না। কিন্তু যদি চরিত্রটি একটি বৈধ সংখ্যা হয়, তবে এই মথড়টি 1 নিউক্লিয়াসের চরিত্রকে দেখে, একই পরীক্ষা করবে। এই প্রক্রিয়াটি নন-বৈধ সংখ্যা চরিত্র পাওয়া পর্যন্ত চলবে, এবং parseInt() মথড় সেই চরিত্র পর্যন্ত থাকা স্ট্রিংকে সংখ্যা হিসাবে কনভার্ট করবে

যেমন, "12345red" স্ট্রিংকে ইন্টিজারে কনভার্ট করতে হলে, parseInt() মথড় 12345 ফলাফল ফেরৎ দেবে, কারণ এটি r চরিত্রকে খুঁজে পায় তখনই তা পরিক্রমা থেকে বের হবে

স্ট্রিংয়ের মধ্যে থাকা সংখ্যা মাটিজাতক সঠিকভাবে সংখ্যা কনভার্ট করা হবে, যেমন "0xA" 10 সঠিকভাবে কনভার্ট করা হবে। কিন্তু, "22.5" স্ট্রিং "22" হিসাবে কনভার্ট করা হবে, কারণ সংখ্যার জন্য ডিজিটাল হলো একটি বেইলুড চরিত্র

একটি উদাহরণ হল:

var iNum1 = parseInt("12345red"); // 12345
var iNum1 = parseInt("0xA"); // 10
var iNum1 = parseInt("56.9"); // 56
var iNum1 = parseInt("red"); // NaN

parseInt() মথড় রূপরেখা রয়েছে, যা দ্বিগুণ, অষ্টগুণ, ষোড়শগুণ অথবা অন্য কোনও পদান্তর ব্যবস্থা থেকে স্ট্রিং কনভার্ট করে ইন্টিজার করতে পারে। পদান্তর রূপরেখা parseInt() মথড়ের দ্বিতীয় পারামিটার দ্বারা নির্দিষ্ট করা হয়, তাই ১৬গুণ মান পারসিফাই করতে parseInt() মথড়কে এইভাবে ব্যবহার করতে হবে:

var iNum1 = parseInt("AF", 16); // 175

সেইভাবে, দ্বিগুণ, অষ্টগুণ এবং দশগুণ (ডিফল্ট মোড) এর জন্য parseInt() মথড এইভাবে ব্যবহার করা যায়:

var iNum1 = parseInt("10", 2); // 2
var iNum2 = parseInt("10", 8); // 8  তুলে দেয়
var iNum3 = parseInt("10", 10); // 10  তুলে দেয়

যদি দশমিক সংখ্যা প্রথম 0 থেকে শুরু করে, তবে 10 হিসাবে নোট করা যথেষ্ট বৈধ হবে, যাতে অণুবাদ হবে অষ্টমিক সংখ্যা না হয়। উদাহরণসমূহ:

var iNum1 = parseInt("010"); // 8  তুলে দেয়
var iNum2 = parseInt("010", 8); // 8  তুলে দেয়
var iNum3 = parseInt("010", 10); // 10  তুলে দেয়

এই কোডটির মধ্যে, দুইটি কোড একই ভাবে "010" শব্দটি একটি সংখ্যা হিসাবে পার্স করে। প্রথমটি এই শব্দটিকে অষ্টমিক হিসাবে দেখে, যেমন দ্বিতীয়টি (ব্যবহার করা হয় 8 হিসাবে নোট) পরিবর্তন করে। শেষটি 10 হিসাবে নোট দেয়, তাই iNum3 শেষপর্যন্ত 10 হয়ে যাবে。

দেখুন

দেখুন JavaScript রেফারেন্স হান্ডবুকparseInt() মথদা সংক্রান্ত বিস্তারিত তথ্য:parseInt().

parseFloat()

parseFloat() মথদা parseInt() মথদা একই পদ্ধতিতে হস্তক্ষেপ করে, 0 থেকে প্রথম অবৈধ অক্ষর পর্যন্ত প্রত্যেক অক্ষর দেখে, তারপর তার আগের শব্দটি সংখ্যা হিসাবে পরিবর্তন করে。

কিন্তু, এই পদ্ধতিটির জন্য, প্রথম উপস্থিত দশমিক বিন্দু একটি বৈধ অক্ষর হবে। যদি দুইটি দশমিক বিন্দু থাকে, তবে দ্বিতীয়টি অবৈধ হিসাবে গ্রহণ করা হবে। parseFloat() এই দশমিক বিন্দুর আগের অক্ষরগুলো সংখ্যা হিসাবে পরিবর্তন করবে। এই মানে, "11.22.33" 11.22 হিসাবে পার্স করা হবে。

parseFloat() মথদা একটি আরও ভিন্নতা হল, শব্দসূচক দশমিক সংখ্যা দশমিক পদ্ধতিতে প্রকাশিত হতে হবে, না তো অষ্টমিক বা ষোড়শমিক। এই পদ্ধতিটি প্রাথমিক 0 অণুবাদ করবে, তাই অষ্টমিক 0102 102 হিসাবে পার্স করা হবে। ষোড়শমিক 0xA হলে, NaN তুলে দেয়, কারণ দশমিক সংখ্যায়, x একটি বৈধ অক্ষর নয় (মন্তব্য:পরীক্ষা করা হলে, বিভিন্ন ব্রাউজার এক্ষেত্রে 0 তুলে দেয়, না তো NaN)

এছাড়া, parseFloat() মথদা কোনও ব্যবহার পদ্ধতি নেই。

parseFloat() মথদা কোনও উদাহরণসমূহ এইমানো হয়েছে:

var fNum1 = parseFloat("12345red"); // 12345  তুলে দেয়
var fNum2 = parseFloat("0xA"); // NaN  তুলে দেয়
var fNum3 = parseFloat("11.2"); // 11.2  তুলে দেয়
var fNum4 = parseFloat("11.22.33"); // 11.22  তুলে দেয়
var fNum5 = parseFloat("0102");	//ফলাফল 102
var fNum1 = parseFloat("red");	//ফলাফল NaN

স্বয়ং প্রয়াস করুন

দেখুন

দেখুন JavaScript রেফারেন্স হান্ডবুকparseFloat() মেথডের বিষয়ে পাওয়া যায় যে:parseFloat().

বাধ্যতামূলক রূপান্তর

আপনি এছাড়াও ব্যবহার করতে পারেন:বাধ্যতামূলক রূপান্তর (type casting)এই রূপান্তরের মানের ধরনটি পরিচালনা করার জন্য ব্যবহার করা যায়। বাধ্যতামূলক রূপান্তরের মাধ্যমে আপনি অন্যান্য ধরনের মানকে পরিচালনা করতে পারেন, যদিও তা আরও কোনও ধরনের মান হতে পারে。

লেখকের মন্তব্য:cast-এর অর্থ "সংকল্পনা" বলে, এটি "বাধ্যতামূলক রূপান্তর"-এর অর্থের সঙ্গে খুবই একই হয়。

ECMAScript-এর মধ্যে উপলব্ধ ৩টি বাধ্যতামূলক রূপান্তর হল:

  • Boolean(value) - দেওয়া মানকে Boolean রূপান্তর করা;
  • Number(value) - দেওয়া মানকে সংখ্যা (যেমন, সংখ্যা বা দশমিক সংখ্যা)তে রূপান্তর করা;
  • String(value) - দেওয়া মানকে স্ট্রিংয়ে রূপান্তর করা;

এই তিনটি ফাংশনের মধ্যে কোনটিকেই মানকে রূপান্তর করে, তাহলে একটি নতুন মান তৈরি হবে, যা প্রকৃত মানকে সরাসরি রূপান্তরিত হয়েছে। এটি অপ্রত্যাশিত ফলাফল সৃষ্টি করতে পারে。

Boolean() ফাংশন

যখন রূপান্তরের মানটি একটি অক্ষরের স্ট্রিং, অশূন্য সংখ্যা বা অবজেক্ট হয়, Boolean() ফাংশন true ফলাফল দেয়। যদি মানটি খালি স্ট্রিং, 0, undefined বা null, তবে false ফলাফল দেয়。

Boolean() ফাংশনের বাধ্যতামূলক ডাটা রূপান্তর পরীক্ষা করার জন্য নিচের কোডটি ব্যবহার করা যেতে পারে:

var b1 = Boolean("");		//false - খালি স্ট্রিং
var b2 = Boolean("hello");		//true - অশূন্য স্ট্রিং
var b1 = Boolean(50);		//true - অশূন্য সংখ্যা
var b1 = Boolean(null);		//false - null
var b1 = Boolean(0);		//false - শূন্য
var b1 = Boolean(new object());	//true - অবজেক্ট

Number() ফাংশন

Number() ফাংশনের বাধ্যতামূলক ডাটা রূপান্তর প্রক্রিয়া parseInt() এবং parseFloat() মেথডসমূহের একইভাবে প্রক্রিয়াকরণ করে, কিন্তু এটি সমগ্র মানকে সংক্ষিপ্ত করে, নয় অংশক্ষেত্রকেই。

কিন্তু মনে রাখুন যে parseInt() এবং parseFloat() মেথডসটি শুধুমাত্র প্রথম অবৈধ অক্ষরটির আগের স্ট্রিংটি সংক্ষিপ্ত করে, তাই "1.2.3"-এর জন্য যথাক্রমে "1" এবং "1.2"-এর সংক্ষিপ্তকরণ করা হবে。

用 Number() 进行强制类型转换,"1.2.3" 将返回 NaN,因为整个字符串值不能转换成数字。如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。

下表说明了对不同的值调用 Number() 方法会发生的情况:

用法 结果
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number("1.2") 1.2
Number("12") 12
Number("1.2.3") NaN
Number(new object()) NaN
Number(50) 50

String() 函数

最后一种强制类型转换方法 String() 是最简单的,因为它可把任何值转换成字符串。

要执行这种强制类型转换,只需要调用作为参数传递进来的值的 toString() 方法,即把 12 转换成 "12",把 true 转换成 "true",把 false 转换成 "false",以此类推。

强制转换成字符串和调用 toString() 方法的唯一不同之处在于,对 null 和 undefined 值强制类型转换可以生成字符串而不引发错误:

var s1 = String(null);	//"null"
var oNull = null;
var s2 = oNull.toString();	//会引发错误

在处理 ECMAScript 这样的弱类型语言时,强制类型转换非常有用,不过应该确保使用值的正确。