ای سی ایم اے تبدیلی نوعیت
- پچھلے پیج ای سی ایم اے بنیادی نوعیت
- آئندہ پیج ای سی ایم اے مرتبط نوعیت
تمام پروگرامنگ زبانوں کا سب سے اہم خصوصیتوں میں سے ایک، نوعیت تبدیلی کی صلاحیت رکھنا ہے。
ECMAScript نے پروگرام کی زندگی میں، نوعیت تبدیلی کا مہمت فراہم کرنے کی بہت ساری سادے طریقوں فراہم کرائی ہیں。
بھارت سارے نوعیتوں میں کوئی بھی نوعیت کو سادے تبدیلی کا مہمت فراہم کرتی ہے، نیز کچھ عالمی مہمت، جو کچھ پیچیدہ تبدیلیوں کی غرض سے استعمال کی جاسکتی ہیں، جو بغیر کسی بات کی، ECMAScript میں نوعیت تبدیلی کا عمل بہت چھوٹا ہوتا ہے。
مقابلہ سٹرنگ
ECMAScript کا بولین، اعداد اور سٹرنگ کا اصل نوعیت کی جائزہ کی جاسکتی جگہ، وہ بائیسی اوبجیکٹ ہیں، یعنی وہ حقیقی اوبجیکٹ کی طرح اپنی خاصیت اور مہمت کا حامل ہیں。
مثال میں، سٹرنگ کی لمبائی حاصل کرنے کی غرض سے، نیچے کا کوڈ استعمال کیا جاسکتا ہے:
var sColor = "red"; alert(sColor.length); // نتیجہ "3"
بغیر کسی بات کی، "red" اصل نوعیت کی سٹرنگ، وہ بھی اپنی خاصیت length کا حامل ہوتی ہے، جو سٹرنگ کی اپنی لمبائی کو رکھتی ہے。
عام میں، 3 اہم اصل نوعیت، بولین، اعداد اور سٹرنگ، toString() مہمت کا حامل ہوتے ہیں، جو ان کی کا جائزہ کئے جانے کے لئے اپنے کا جائزہ لینے کی صلاحیت فراہم کرتا ہے。
نکات:آپ کا سوال ہو سکتا ہے کہ,“STRING کو toString() مہمت کیوں دی گئی ہے، یہ بے فائدہ نہیں ہے؟” بله، یقیناً اس طرح کا ہے، جس طرح ECMAScript نے تمام اوبجیکٹوں کو toString() مہمت دینا بناکر کیا ہے، جو بائیسی اوبجیکٹ یا حقیقی اوبجیکٹ کا حامل ہو، تو وہ بھی toString() مہمت کا حامل ہوگا، کیونکہ STRING نوعیت بائیسی اوبجیکٹ کی شکل میں آتی ہے، لہذا وہ بھی toString() مہمت کا حامل ہوگا。
طريقة toString() من نوع Boolean تعرض فقط "true" أو "false"، ويحدد الناتج قيمة المتغير:
var bFound = false; alert(bFound.toString()); //يخرج "false"
طريقة toString() من نوع Number مميزة، لأنها تحتوي على نمطين، وهيالنمط الافتراضيونمط القاعدةباستخدام النمط الافتراضي، طريقة toString() تعرض فقط قيمة الأعداد المعدة (سواء كانت أعدادًا صحيحة، أو أعدادًا عشرية، أو أعدادًا علمية)، مثلما هو موضح أدناه:
var iNum1 = 10; var iNum2 = 10.0; alert(iNum1.toString()); //يخرج "10" alert(iNum2.toString()); //يخرج "10"
توضیح:في النمط الافتراضي، بغض النظر عن الطريقة التي تم تعريف الأعداد بها في البداية، فإن طريقة toString() من نوع Number تعود دائمًا بتمثيل عشري للأعداد. لذلك، يتم عرض الأعداد المعلن عنها ككلمات حقيقية ثمانية أو عشرية كتمثيل عشري.
باستخدام نمط قاعدة toString() من نوع Number، يمكنك استخدامقاعدةتعرض الأعداد، مثل قاعدة الثنائية هي 2، قاعدة الثمانية هي 8، وقاعدة العشرية هي 16.
قاعدةهذا مجرد شكل آخر من الأضافتين التي تريد تحويلها، وهو معامل طريقة toString():
var iNum = 10; alert(iNum.toString(2)); //يخرج "1010" alert(iNum.toString(8)); //يخرج "12" alert(iNum.toString(16)); //يخرج "A"
في المثال السابق، تم إخراج الرقم 10 بثلاثة أشكال مختلفة: شكل ثنائي، شكل ثماني، وشكل عشري. يتم استخدام الشكل العشري في HTML لتمثيل الألوان، مما يجعل هذا الميزة مفيدة عند التعامل مع الأعداد في HTML.
توضیح:العدد يدعو toString(10) بنفس الطريقة التي يدعو toString()، وكلتا الطريقتين تعودان بنفس الشكل العشري للعدد.
أنظر:
مزید معلومات JavaScript مرجع کتابمعلومات مفصلة عن طريقة toString() المقدمة:
تبدیل به عدد
ECMAScript دو روش برای تبدیل مقادیر اولیه غیرعددی به اعداد ارائه میدهد، یعنی parseInt() و parseFloat().
همانطور که ممکن است انتظار داشته باشید، اولین یکی مقادیر را به عدد صحیح تبدیل میکند و دیگری مقادیر را به عدد اعشاری تبدیل میکند. تنها زمانی این روشها به درستی کار میکنند که به رشتهها فراخوانی شوند؛ در غیر این صورت 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) انجام میشود، آن را میپarsه. خط آخر عدد پایه را 10 تعیین میکند، بنابراین iNum3 در نهایت برابر با 10 است.
مزید معلومات
مزید معلومات JavaScript مرجع کتاباطلاعات بیشتری در مورد روش parseInt() ارائه شده است:parseInt()استعمال کرسکتے ہیں۔
parseFloat()
روش parseFloat() به روش parseInt() مشابهی عمل میکند، از موقعیت 0 شروع به بررسی هر کاراکتر میکند تا به کاراکتر غیرمعتبر اولین برسد و سپس رشتهای که قبل از این کاراکتر است را به عدد تبدیل کند.
اما، برای این روش، نقطه کوچک اولین出现的 کاراکتر معتبر است. اگر دو نقطه کوچک وجود داشته باشد، نقطه کوچک دوم غیرمعتبر تلقی میشود. parseFloat() کاراکترهای قبل از این نقطه کوچک را به عدد تبدیل میکند. این بدان معناست که رشته "11.22.33" به 11.22 تبدیل میشود.
یک تفاوت دیگر در استفاده از روش parseFloat() این است که، عدد اعشاری باید به صورت دهی بیان شود، نه هگزادسیمال یا اکسیادسیمال. این روش اعداد پیشدرآمدی را نادیده میگیرد، بنابراین عدد اکسیادسیمال 0102 به 102 تبدیل میشود. برای عدد هگزادسیمال 0xA، این روش NaN را بازمیگردانند، زیرا در عدد اعشاری، x یک کاراکتر معتبر نیست. (توضیح:در آزمایشها، پیادهسازیهای خاص مرورگر به جای NaN، 0 را بازمیگردانند.)
علاوه بر این، روش 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 میں دستیاب 3 طرح کا قسطی تبدیل کا استعمال کیا جاتا ہے:
- Boolean(value) - مقررہ قیمتی کو بولین بنایا جائے گا؛
- Number(value) - مقررہ قیمتی کو عدد بنایا جائے گا (یہ ممکن ہو سکتا ہے صحیح یا نصف صحیح عدد);
- String(value) - مقررہ قیمتی کو سطر بنایا جائے گا؛
یہ تینوں کسی سے بھی کا استعمال کرکے قیمتی کو تبدیل کرنا، نئی قیمتی کا وجود پیدا ہوگا، جو بنیادی قیمتی سے تبدیل کی گئی قیمتی کا حامل ہوگا، جس سے غیر متوقع اثرات پیدا ہو سکتے ہیں。
Boolean() کا قسطی تبدیل
جب تبدیل کرانے والی کا جیہا کسی بھی حرف والا سطر، غیر صفر عدد یا علامت ہو تو Boolean() کا استعمال کیا جائے گا تو اس کا بلاک میگا true، اگر وہ خالی سطر، صفر عدد، 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() کا قسطی تبدیل (type coercion) 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 جیسے کمزور نوعیت کی زبانوں کو ہندار کرنا بہت مفید ہوتا ہے، لیکن صحیح کا استعمال کرنا یقینی رکھنا چاہیے۔
- پچھلے پیج ای سی ایم اے بنیادی نوعیت
- آئندہ پیج ای سی ایم اے مرتبط نوعیت