ການດຳເນີນການວິທະຍາ ECMAScript

ຄຳວັດສະນະຄະດີປຽບທຽບສະແດງການປຽບທຽບ. ແຕ່ລະຄຳວັດສະນະຄະດີມີຄືນຄຳຕາມ Boolean.

ວິທະຍາບັນປຽບທຽບທົດສະພາບ:

ຄຳວັດສະນະຄະດີ <, >, <=, >= ສະແດງການປຽບທຽບສອງຄວັນ ການປຽບທຽບດຽວກັນກັບການປຽບທຽບວິທະຍາບັນ:

ແຕ່ລະຄຳວັດສະນະຄະດີມີຄືນຄຳຕາມ Boolean:

var bResult1 = 2 > 1	//true
var bResult2 = 2 < 1	//false

ແຕ່ວ່າການຍົກຂຶ້ນກັບຄຳວັດສະນະຄະດີສອງຄຳຂຽນບໍ່ມີການປະຕິບັດດຽວກັນ. ຄົນສ່ວນຫຼາຍຄິດວ່າຄຳ "<" ມີຄວາມຄົບຖານ "ຢູ່ໃນຊັບສັບອັງກິດ" ແລະ ">" ມີຄວາມຄົບຖານ "ຢູ່ໃນຊັບສັບອັງກິດຕໍ່ຫຼັງ" ແຕ່ບໍ່ແມ່ນຫຍັງ. ສຳລັບຄຳຂຽນສະເພາະວ່າການປຽບທຽບຄວັນລະບັບຂອງຄຳຂຽນທີ່ຢູ່ໃນຄຳຂຽນອີກຄຳຂຽນຄືກັນ. ຫຼັງຈາກການປຽບທຽບນັ້ນກໍ່ຈະກັບຄືນຄຳຕາມບັນດາຄວັນລະບັບ Boolean. ຄຳວັງຢູ່ໃນວ່າຄວັນຂອງອັງກິດສະເພາະການຄືນມີຄວັນລະບັບຕໍ່າກວ່າຄວັນຂອງອັງກິດທີ່ຊັງ ສະພາບນີ້ອາດມີການປຽບທຽບຄືກັນ:

var bResult = "Blue" < "alpha";
alert(bResult);	//ການສະແດງ true

ໃນຕົວຢ່າງທີ່ກ່າວກ່ອນນີ້ວ່າຄຳຂຽນ "Blue" ຊັງກວ່າ "alpha" ຍ້ອນວ່າຄວັນຂອງອັງກິດ B ມີຄວັນລະບັບ 66 ແລະຄວັນຂອງອັງກິດ a ມີຄວັນລະບັບ 97. ເພື່ອທີ່ຈະມີການປຽບທຽບຄວັນຕາມຖານຂອງອັງກິດຢ່າງແທ້ຈິງຕ້ອງເຮັດໃຫ້ຄວັນທັງສອງມີຄວັນຂັ້ນສັບສົນດຽວກັນ (ທັງທະຍົມຫຼືທັງຊັງ) ແລະຫຼັງຈາກນັ້ນກໍ່ຈະປຽບທຽບ:

var bResult = "Blue".toLowerCase() < "alpha".toLowerCase();
alert(bResult);	//输出 false

ປ່ຽນຕົວເລກທັງສອງເປັນຄວາມສັບສົນ, ແລະຮັບປະກັນວ່າຈະບັນທຶກ "alpha" ຕັ້ງຢູ່ກ່ອນ "Blue" ຕາມຊັ້ນສະເຫນີປະກອບພີພາວະ.

ທຽບຕົວເລກແລະຄວາມ

ຄວາມຄວາມຍາກອີກໜຶ່ງກຳລັງເກີດຂຶ້ນໃນການທຽບຕົວເລກໃຫ້ກັບຄວາມບໍ່ສາມາດປ່ຽນສາຍເລກໄດ້, ອີງຕາມຕົວຢ່າງ:

var bResult = "25" < "3";
alert(bResult);	//ອອກ "true"

ການທຽບທີ່ນີ້ແມ່ນຄວາມ "25" ແລະ "3". ຕົວເລກທັງສອງແມ່ນຄວາມ, ແລະທຽບຕາມຊັ້ນສະເຫນີຄວາມ (ຊັ້ນສະເຫນີ "2" ແມ່ນ 50, ຊັ້ນສະເຫນີ "3" ແມ່ນ 51).

ແຕ່ຖ້າຕົວເລກໜຶ່ງຈະຖືກປ່ຽນເປັນຕົວເລກ, ຜົນການທຽບຈະຄວາມຈິງຈັງ:

var bResult = "25" < 3;
alert(bResult);	//ອອກ "false"

ບ່ອນນີ້, ຄວາມ "25" ຈະຖືກປ່ຽນສຳລັບຕົວເລກ 25, ແລະທຽບກັບຕົວເລກ 3, ຜົນການທຽບບໍ່ກົງກັນກັບຄາດຫຍັງ.

ທຸກໆຄັ້ງທີ່ພິຈາລະນາຕົວເລກແລະຄວາມ, ECMAScript ຈະປ່ຽນຄວາມສຳລັບຕົວເລກ, ແລະທຽບຕາມຊັ້ນສະເຫນີຕົວເລກ.

ແຕ່ຖ້າຄວາມບໍ່ສາມາດປ່ຽນສາຍເລກໄດ້ຫຍັງ? ຄິດຫຍັງຕົວຢ່າງດັ່ງຕໍ່ມາ:

var bResult = "a" < 3;
alert(bResult);

ຕອນນີ້ເຈົ້າສາມາດຄາດຄິດຫຍັງວ່າລະບຽບນີ້ຈະອອກຈາກລະບຽບນີ້ຫຍັງ? ປະເພດ "a" ບໍ່ສາມາດປ່ຽນສາຍເລກຈາກຄວາມລາຍ. ແຕ່ຖ້າພວກເຈົ້າເອິ້ນຄວາມລາຍ parseInt(), ຜົນການບັນທຶກຈະເປັນ NaN. ອີງຕາມກົດລະບຽບ, ພສັນຍານທີ່ບັນທຶກ NaN ຈະກັບຄືກັບ false, ແຕ່ລະບຽບນີ້ບໍ່ກວດຄືກັບ false:

var bResult = "a" >= 3;
alert(bResult);

ປົກກະຕິ, ຖ້າຕົວເລກທີ່ນຳໃຊ້ພສັນຍານຕໍ່ສອງຕົວເລກລົງສອງມັນບໍ່ກວດຄືກັບ false, ແຕ່ຖ້າຕົວເລກໃດໜຶ່ງແມ່ນ NaN, ສະຖານະການບໍ່ແມ່ນແນວນັ້ນ.