ECMAScript Type Conversion
- ຫນ້າຫຼັງ ECMAScript Original Type
- ຫນ້າຫຼັງ ECMAScript Reference Type
所有程序设计语言最重要的特征之一是具有进行类型转换的能力。
ECMAScript 给开发者提供了大量简单的类型转换方法。
大部分类型具有进行简单转换的方法,还有几个全局方法可以用于更复杂的转换。无论哪种情况,在 ECMAScript 中,类型转换都是简短的一步操作。
ການພາສາເປັນຄຳເວົ້າ
ຄວາມສຳຄັນຂອງຄຳເວົ້າ Boolean, ຈຳນວນທີ່ສະເພາະແລະຄຳເວົ້າຕົ້ນຕົວຂອງ ECMAScript ແມ່ນພະຍາຍາການຫນັງວ່າມັນມີຄວາມຄິດຄືນຂອງພະຍາຍາການແລະການ.
ຕົ້ນມາຈະຮັບຄວາມຍາວຄຳເວົ້າສານວ່າ:
var sColor = "red"; alert(sColor.length); //ອອກ "3"
ທັງໝົດ "red" ຈະເປັນຄຳເວົ້າຕົ້ນຕົວມີຄວາມຄິດຄືນ length ທີ່ບັນທຶກຂະໜາດຂອງຄຳເວົ້າ.
ໃນທັງໝົດມີສາມຊະນິດພະຍາຍາມພາສາທຳມະດາ Boolean, ຈຳນວນທີ່ສະເພາະແລະຄຳເວົ້າມີການພາສາ toString()ຫຼືບໍ່ມີການກະຈາຍຫຼືບໍ່.
ຂໍ້ສັງເກດ:ທ່ານອາດຈະຖາມວ່າ,“ຄຳເວົ້າມີການການພາສາ toString()ຫຼືບໍ່ມີການກະຈາຍຫຼືບໍ່?”ແມ່ນແນ່ນອນແລະບໍ່ພຽງແຕ່ຫນັງວ່າ ECMAScript ອະທິບາຍວ່າທຸກອັນຄວນມີການພາສາ toString()ອັນຍາການຫຼືອັນຕະລາງອັນຍາການ.ຍ້ອນວ່າຄຳເວົ້າມີຄວາມຄິດຄືນອັນຍາການຫນັງວ່າມັນມີການພາສາ 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 ສາມາດການສະແດງຈຳນວນສະຫລາກທີ່ແຕ່ງຕັ້ງແມ່ນສະຫລາກສິບຕາມກຳນົດ. ດັ່ງນັ້ນ, ຈຳນວນທີ່ຖືກກ່າວຢູ່ໃນຮູບແບບ octal ຫລື hexadecimal ຈະຖືກສະແດງໃຫ້ເປັນ decimal.
ການໃຊ້ຮູບແບບຂອງ 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()。
ຄືກັບທີ່ທ່ານອາດຄິດ, ຄຳນວນທຳອິດຈະປ່ຽນຄຳນວນເປັນຈຳນວນ, ຄຳນວນຫຼັງຈະປ່ຽນຄຳນວນເປັນບິນນິວທິບ. ພຽງແຕ່ສະແຫວງ String ຈະເຮັດໃຫ້ການເຮັດວຽກນັ້ນສຳລັບ; ສະແຫວງອື່ນໆຈະກັບຄຳນວນ NaN.
parseInt()
parseInt() ແລະ parseFloat() ທັງສອງຈະກວດກາຄຳນວນກ່ອນຈະກວດກາວ່າມັນເປັນຈຳນວນຫຼືບິນນິວທິບ.
parseInt() ການກວດກາຄຳນວນກ່ອນຈະກວດກາຄຳນວນບໍ່ແມ່ນຈຳນວນ. parseInt() ແລະ parseFloat() ທັງສອງຈະກວດກາຄຳນວນຄືກັບນັ້ນກ່ອນ.
ຕົວຢ່າງ, ຖ້າຕ້ອງປ່ຽນຄຳນວນ "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
ຕະຫລອດແລ້ວ,ສຳລັບບິນນິວທິບ (binary), ບິນນິວທິບ (octal) ແລະ ບິນນິວທິບ (decimal) (ແບບຜົນດັງແບບລັງເບຍ), parseInt() ການເອິ້ນຄືກັບນັ້ນອາດໄດ້ຮັບ:
var iNum1 = parseInt("10", 2); //ກຳລັງ 2 var iNum2 = parseInt("10", 8); //ກຳລັງຄວາມສາມາດ 8 var iNum3 = parseInt("10", 10); //ກຳລັງຄວາມສາມາດ 10
ຖ້າຈຳນວນສະເຫຼີມແມ່ນມີການຕົ້ນຕອນ 0, ມັນຫຼາຍກວ່າຈະໃຊ້ກົມກວມ 10 ເພື່ອຫຼີກລ່ຽງການຮັບມືອັດຕາ 8 ຈິງ.
var iNum1 = parseInt("010"); //ກຳລັງຄວາມສາມາດ 8 var iNum2 = parseInt("010", 8); //ກຳລັງຄວາມສາມາດ 8 var iNum3 = parseInt("010", 10); //ກຳລັງຄວາມສາມາດ 10
ໃນແຜນນີ້, ສອງການນຳໃຊ້ກະຕຸບ "010" ຈະຖືກບັນທຶກເປັນຈຳນວນ. ການນຳໃຊ້ທີໜຶ່ງຈະບັນທຶກເປັນຄວາມສະແດງຂອງບັນດາສະແນນທີ່ຖືກບັນທຶກໃນກົມກວມ 8, ຄືກັບການນຳໃຊ້ທີສອງ (ຖືກບັນທຶກຂອງກົມກວມ 8). ການນຳໃຊ້ທີສາມຈະບັນທຶກຂອງກົມກວມ 10, ຍັງມີ iNum3 ຈະບັນທຶກວ່າ 10.
ບັນທຶກອີກ:
ບັນທຶກອີກ: ພາສາ JavaScript ປື້ມການຫນ້າສະແດງຂໍ້ມູນລະອຽດກ່ຽວກັບ parseInt()parseInt().
parseFloat()
parseFloat() ການຍັງບໍ່ມີຄວາມກຳລັງຈະການທີ່ຄືກັບ parseInt()
ແຕ່ສຳລັບການນຳໃຊ້ນີ້, ຄວາມສາມາດທີ່ປະກົດຂຶ້ນທຳອິດແມ່ນຄວາມສາມາດ. ຖ້າມີສະແນນທີ່ປະກົດຂຶ້ນສອງ, ສະແນນທີ່ປະກົດຂຶ້ນທີສອງຈະຖືກເບິ່ງວ່າບໍ່ມີຄວາມສາມາດ. 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() ພຽງແຕ່ປ່ຽນສະເພາະຈາກຄຳສັບທີ່ບໍ່ມີຈຳກັດຄັນດຽວທີ່ກ່ອນການສັບພາສາ; ດັ່ງນັ້ນ
用 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", ພວກມັນຕື່ມອີກ.
ຄວາມແຕກຕ່າງທີ່ພຽງພໍກັນລະບົບ String() ແລະ ການເອິ້ນລະບົບ toString() ແມ່ນ, ການປ່ຽນປະເພດຢ່າງຕັດຕາມມັນຂອງ null ແລະ undefined ສາມາດປ່ຽນປະເພດເປັນຕາມຄຳເວົ້າບໍ່ໄດ້ກໍ່ຈະເປັນມູນຄ່າ.
var s1 = String(null); //"null" var oNull = null; var s2 = oNull.toString(); //ຈະເປັນການສົ່ງມາຂໍ້ຄວາມຜິດ
ໃນການຈັດການພາສາ ECMAScript ທີ່ເປັນພາສາທີ່ບໍ່ມີບົດບາດຢ່າງສຳຄັນກັນ, ການປ່ຽນປະເພດຢ່າງຕັດຕາມມັນຈະມີຜົນປະໂຫຍດ, ແຕ່ຄວນຮັບປະກັນວ່າຈະນໍາໃຊ້ມູນຄ່າທີ່ຖືກຕ້ອງ.
- ຫນ້າຫຼັງ ECMAScript Original Type
- ຫນ້າຫຼັງ ECMAScript Reference Type