ສາຍລະບົບຈຳນວນ JavaScript
- ຫນ້າຫນັງກ່ອນ JS String Template
- ຫນ້າຫນັງ JS BigInt
ພາສາຈີສະຕິດມີພຽງປະເພດຈຳນວນດຽວ.
ການຂຽນຈຳນວນສາມາດມີບາງບໍ່ມີຄວາມພິການ.
ພາສາຈີສະຕິດ
书写 JavaScript 数值既可以带小数点,也可以不带:
ຄວາມທີ່ພາບ
var x = 3.14; // 带小数点的数值 var y = 3; // 不带小数点的数值
超大或超小的数可通过科学计数法来写:
ຄວາມທີ່ພາບ
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
JavaScript 数值始终是 64 位的浮点数
ທັງໝົດຄຳສັບຂອງ JavaScript ຈະເປັນຈຳນວນບາງຄັ້ງ 64 ບຸນທີ່ຈະຖືກບັນທຶກ.
ຈຳນວນຂອງ JavaScript ບໍ່ມີຄວາມສະຫຼາດສະເຫຼີມທີ່ຈະຖືກບັນທຶກຢູ່ເທິງຄວາມສະຫຼາດດັບວິທະຍາສາກົນ IEEE 754.
ຮູບແບບນີ້ບໍ່ມີຄວາມສະຫຼາດຫຼາຍຫຼາຍຫາ 64 ບຸນ ດັ່ງນັ້ນ 0 ຫາ 51 ບຸນບໍ່ມີຄວາມສະຫຼາດຈຳນວນ (ບາງຢ່າງ), 52 ຫາ 62 ບຸນບໍ່ມີຄວາມສະຫ�າດອັດຕາ, 63 ບຸນບໍ່ມີຄວາມສະຫ�າດສັນຍາ:
ຄູ່ມວນ (ອັດຕາສະເຫຼີມ/ການຕອບສະເຫຼີມ) | ອັດຕາ | ສັນຍາ |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
ຄວາມສະຫຼາດ
ຈຳນວນທີ່ບໍ່ນຳໃຊ້ອັດຕາລະບົບ ຫຼືຄຳສັບວິທະຍາສາກົນຈະຖືກບັນທຶກຄວາມສະຫຼາດຫຼາຍຫຼາຍຫາ 15 ບຸນ.
ຄວາມທີ່ພາບ
var x = 999999999999999; // x ຈະເປັນ 999999999999999 var y = 9999999999999999; // y ຈະເປັນ 10000000000000000
ຈຳນວນສະລິບສູງສຸດແມ່ນ 17 ບຸນ ແຕ່ການທົດສະນະຈຳນວນບາງຄັ້ງຈະບໍ່ສະຫຼາດຄວາມສະຫຼາດ 100%:
ຄວາມທີ່ພາບ
var x = 0.2 + 0.1; // x ຈະເປັນ 0.30000000000000004
ການນຳໃຊ້ການສົມທຽບທົດສະນະ ແລະການແບ່ງປະກອບຈະຊ່ວຍເຫຼືອບັນຫາທີ່ມີຫຼັງຈາກນັ້ນ:
ຄວາມທີ່ພາບ
var x = (0.2 * 10 + 0.1 * 10) / 10; // x ຈະເປັນ 0.3
ຈຳນວນ ແລະ ຄຳສັບການສົມທຽບ
ຄໍາເຕືອນ !!
ການສົມທຽບ ແລະ ການກ່ຽວຂ້ອງຂອງ JavaScript ທົດສະນະ +.
ຈຳນວນໃຊ້ການສົມທຽບ. ຄຳສັບໃຊ້ການກ່ຽວຂ້ອງ.
ຖ້າທີ່ທ່ານຈະສົມທຽບຈຳນວນສອງອັນຫຼັງຈາກນັ້ນຈະເປັນຈຳນວນ:
ຄວາມທີ່ພາບ
var x = 10; var y = 20; var z = x + y; // z ຈະເປັນ 30 (ຈຳນວນ)
ຖ້າທີ່ທ່ານຈະສົມທຽບຄຳສັບສອງອັນຫຼັງຈາກນັ້ນຈະເປັນການກ່ຽວຂ້ອງຄຳສັບ:
ຄວາມທີ່ພາບ
var x = "10"; var y = "20"; var z = x + y; // z 将是 1020(字符串)
ຖ້າທີ່ທ່ານຈະການສົມທຽບຈຳນວນກັບຄຳສັບຫຼັງຈາກນັ້ນຈະເປັນການກ່ຽວຂ້ອງຈາກຄຳສັບ:
ຄວາມທີ່ພາບ
var x = 10; var y = "20"; var z = x + y; // z ຈະເປັນ 1020 (ການກ່ຽວຂ້ອງຈາກຄຳສັບ)
如果您对一个字符串和一个数字相加,结果也是字符串级联:
ຄວາມທີ່ພາບ
var x = "10"; var y = 20; var z = x + y; // z 将是 1020(字符串)
常见的错误是认为结果应该是 30:
ຄວາມທີ່ພາບ
var x = 10; var y = 20; var z = "The result is: " + x + y;
常见的错误是认为结果应该是 102030:
ຄວາມທີ່ພາບ
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScript 从左向右进行编译。
因为 x 和 y 都是数,10 + 20 将被相加。
因为 z 是字符串,30 + "30" 被级联。
数字字符串
JavaScript 字符串可以拥有数字内容:
var x = 100; // x 是数字 var y = "100"; // y 是字符串
在所有数字运算中,JavaScript 会尝试将字符串转换为数字:
该例如此运行:
var x = "100"; var y = "10"; var z = x / y; // z 将是 10
该例也将如此运行:
var x = "100"; var y = "10"; var z = x * y; // z 将是 1000
该例如此运行:
var x = "100"; var y = "10"; var z = x - y; // z 将是 90
但是该例不会如上例般运行:
var x = "100"; var y = "10"; var z = x + y; // z 不会是 110(而是 10010)
在最后一个例子中,JavaScript 用 + 运算符对字符串进行了级联。
NaN - 非数值
NaN
属于 JavaScript 保留词,指示某个数不是合法数。
尝试用一个非数字字符串进行除法会得到 NaN(Not a Number):
ຄວາມທີ່ພາບ
var x = 100 / "Apple"; // x 将是 NaN(Not a Number)
不过,假如字符串包含数值,则结果将是数:
ຄວາມທີ່ພາບ
var x = 100 / "10"; // x 将是 10
您可使用全局 JavaScript 函数 isNaN()
来确定某个值是否是数:
ຄວາມທີ່ພາບ
var x = 100 / "Apple"; isNaN(x); // 返回 true,因为 x 不是数
ຕ້ອງຫັນຫຼາຍ NaN
。ຖ້າທ່ານໃຊ້ວິທະຍາດຳເນີນການທຳນາຍວິທະຍາດຳເນີນ NaN
ຊຶ່ງຜົນຄືນຈະເປັນ NaN
:
ຄວາມທີ່ພາບ
var x = NaN; var y = 5; var z = x + y; // z ຈະເປັນ NaN
ຜົນຄືນອາດເປັນການຕິດຕໍ່ຂອງສາຍ
ຄວາມທີ່ພາບ
var x = NaN; var y = "5"; var z = x + y; // z ຈະເປັນ NaN5
NaN
ຈະເປັນວິທະຍາtypeof NaN
ກັບຄືນ number
:
ຄວາມທີ່ພາບ
typeof NaN; // ກັບຄືນ "number"
Infinity
Infinity
ຫຼື -Infinity
)ຈະເປັນວິທະຍາທີ່ JavaScript ກັບຄືນໃນການທຳນາຍວິທະຍາຫຼາຍກວ່າຄວາມສາມາດທີ່ສູງສຸດ
ຄວາມທີ່ພາບ
var myNumber = 2; while (myNumber != Infinity) { // ດຳເນີນຈົນກວ່າ Infinity myNumber = myNumber * myNumber; }
ການແບ່ງຕະຫຼາດ 0 (ບໍ່ມີ) ຈະເປັນວິທະຍາ Infinity
:
ຄວາມທີ່ພາບ
var x = 2 / 0; // x ຈະເປັນ Infinity var y = -2 / 0; // y ຈະເປັນ -Infinity
Infinity
ຈະເປັນວິທະຍາ:typeOf Infinity
ກັບຄືນ number
。
ຄວາມທີ່ພາບ
typeof Infinity; // ກັບຄືນ "number"
ສິບຫຼາຍ
JavaScript ຈະອະທິບາຍວິທະຍາທີ່ມີການວາງວຽງຫຼັງການການການການການປະກາດສິບຫຼາຍ 0x
ຄຳການປະກາດວິທະຍາສະເພາະຈະຖືກອະທິບາຍວ່າສິບຫຼາຍ
ຄວາມທີ່ພາບ
var x = 0xFF; // x ຈະເປັນ 255。
ບໍ່ຕ້ອງໃຊ້ການວາງວຽງຫຼັງການການການປະກາດວິທະຍາ (ອີງຕາມ 07)
ບາງສະບັນຍາວິທະຍາ JavaScript ຈະອະທິບາຍວິທະຍາທີ່ມີການວາງວຽງຫຼັງການການສະແດງສະຫຼາກ
ໂດຍຜົນຕໍາແໜ່ງວິທະຍາ JavaScript ສະແດງວິທະຍາໃຫ້ເປັນສາມມາດສິບຫຼາຍ
ບໍ່ວ່າທ່ານສາມາດໃຊ້ toString()
ວິທະຍາການທີ່ອອກວິທະຍາໃຫ້ເປັນສາມມາດສິບຫົກຫຼືສິບສອງຫຼືສິບສອງສາມ
ຄວາມທີ່ພາບ
var myNumber = 128; myNumber.toString(16); // ກັບຄືນ 80 myNumber.toString(8); // ກັບຄືນ 200 myNumber.toString(2); // ກັບຄືນ 10000000
ວິທະຍາສາມາດເປັນບັນດາວິທະຍາອອກໄປ
ທຳມະດາວິທະຍາ JavaScript ແມ່ນໄດ້ສ້າງຈາກຄຳຂອງວິທະຍາສະເພາະ: var x = 123
ແຕ່ກໍ່ສາມາດກໍານົດຢູ່ບໍ່? new
ກໍານົດວ່າເປັນວັດຖຸ: var y = new Number(123)
ຄວາມທີ່ພາບ
var x = 123; var y = new Number(123); // typeof x ແມ່ນ number // typeof y ແມ່ນ object
ບໍ່ຕ້ອງສ້າງວັດຖຸສະເພາະນັ້ນ. ນັ້ນຈະຫຼຸດຄວາມໄວຂອງການດຳເນີນ.
new
ຄຳປະກອບສະເພາະຈະເຮັດໃຫ້ວິທະຍາສາດຂອງຈາກການຂຽນກະທັກປົກກະຕິຈະຈະເປັນສິ່ງທີ່ບໍ່ສາມາດຄາດຄະເນດ້ວຍ.
ເມື່ອໃຊ້ ==
ຫຼັງຈາກການໃຊ້ຜູ້ບັນທຶກ, ຈຳນວນທີ່ສະເໝີ ຈະເບິ່ງຄືກັນ:
ຄວາມທີ່ພາບ
var x = 500; var y = new Number(500); // (x == y) ແມ່ນ true, ຍ້ອນ x ແລະ y ແມ່ນມີຄຸນຄ່າທີ່ສະເໝີ
ເມື່ອໃຊ້ ===
ຫຼັງຈາກການໃຊ້ຜູ້ບັນທຶກ ຈຳນວນທີ່ສະເໝີ ຈະປ່ຽນເປັນບໍ່ສະເໝີ, ຍ້ອນ: ===
ຜູ້ບັນທຶກຕ້ອງມີຮູບແບບ ແລະ ຄຸນຄ່າທີ່ສະເໝີ.
ຄວາມທີ່ພາບ
var x = 500; var y = new Number(500); // (x === y) ແມ່ນ false, ຍ້ອນ x ແລະ y ແມ່ນມີຮູບແບບທີ່ແຕກຕ່າງກັນ
ແມ່ນບໍ່ດີ. ວັດຖຸບໍ່ສາມາດປະກອບກັນ:
ຄວາມທີ່ພາບ
var x = new Number(500); var y = new Number(500); // (x == y) ແມ່ນ false, ຍ້ອນວ່າວັດຖຸບໍ່ສາມາດປະກອບກັນ
ວັດຖຸ JavaScript ບໍ່ສາມາດປະກອບກັນ.
- ຫນ້າຫນັງກ່ອນ JS String Template
- ຫນ້າຫນັງ JS BigInt