ການສົງໃສຊີບີເຈັກ
- ຫົນຫລັງ JS ການປະຕິບັດທີ່ດີທີ່ສຸດ
- ຫົນຕໍ່ໄປ JS ການປະຕິບັດ
本章指出一些常见的 JavaScript 错误。
意外使用赋值运算符
如果程序员在 if
ການປະຕິບັດທີ່ບໍ່ຄາດຫວັງໃນຄຳປະຕິບັດ=
)ທີ່ບໍ່ແມ່ນການປະຕິບັດການປະກັນ===
),JavaScript 程序可能会产生一些无法预料的结果。
ຄຳປະຕິບັດນີ້ if
ຄຳປະຕິບັດຈະກັບຄຳປະຕິບັດ false
(ຄືກັບທີ່ຄາດຫວັງ),ຍ້ອນ x ບໍ່ທຽບ 10:
var x = 0; if (x == 10)
ຄຳປະຕິບັດນີ້ if
ຄຳປະຕິບັດຈະກັບຄຳປະຕິບັດ true
(ບໍ່ຄືກັບທີ່ຄາດຫວັງ),ຍ້ອນ 10 ເປັນ true:
var x = 0; if (x = 10)
ຄຳປະຕິບັດນີ້ if
ຄຳປະຕິບັດຈະກັບຄຳປະຕິບັດ false
(ບໍ່ຄືກັບທີ່ຄາດຫວັງ),ຍ້ອນ 0 ເປັນ false:
var x = 0; if (x = 0)
ການຈັດຄຳທີ່ສະຖິຕິຈະກັບຄຳທີ່ຈັດຄຳຂອງມັນ
ຄວາມຄາດຄະແນນທີ່ຜິດ
ໃນການປະຕິບັດທີ່ສະຖິຕິຈະບໍ່ມີຄວາມສຳຄັນຂອງຊັບສັບຂໍ້ມູນ if
ຄຳປະຕິບັດຈະກັບຄຳປະຕິບັດ true
:
var x = 10; var y = "10"; if (x == y)
ໃນການປະຕິບັດທີ່ສະຖິຕິຈະມີຄວາມສຳຄັນຂອງຊັບສັບຂໍ້ມູນ if
ຄຳປະຕິບັດຈະກັບຄຳປະຕິບັດ false
:
var x = 10; var y = "10"; if (x === y)
ມີຄວາມຜິດຫວັງຫລາຍຄົນທີ່ບໍ່ຄົງຄວາມພິຈາລະນາ switch
ຄຳປະຕິບັດທີ່ສະຖິຕິ
ຄຳປະຕິບັດນີ້ switch
ຄຳປະຕິບັດຈະສະແດງຄຳແນະນຳ:
var x = 10; switch(x) { case 10: alert("Hello"); }
ຄຳປະຕິບັດນີ້ switch
ຄຳປະຕິບັດຈະບໍ່ສະແດງຄຳແນະນຳ:
var x = 10; switch(x) { case "10": alert("Hello"); }
ການສະຖິຕິແລະການສະຖິຕິຫລັງຈາກຫລັງທີ່ຜິດຫວັງ
ການສະຖິຕິສະຖິຕິຄຳທີ່ສະຖິຕິ。
ການສະຖິຕິຫລັງຈາກຫລັງສະຖິຕິຄຳທີ່ສະຖິຕິ。
ໃນ JavaScript ທັງສອງການປະຕິບັດຈະໃຊ້ຄົນປະຕິບັດດຽວກັນ +
ຄົນປະຕິບັດ
ຍ້ອນນັ້ນຈະມີຄວາມແຕກຕ່າງລະຫວ່າງການສະຖິຕິຈະນັດບາງຄຳທີ່ສະຖິຕິຈະນັດຄຳທີ່ສະຖິຕິຈະນັດຄຳ:
var x = 10 + 5; // x 中的结果是 15 var x = 10 + "5"; // x 中的结果是 "105"
ຖ້າມີສອງສາຍປະກອບກັນກັບການສະຖິຕິຈະບໍ່ສາມາດຄາດຄະແນນຜົນກະທົບ:
var x = 10; var y = 5; var z = x + y; // z 中的结果是 15 var x = 10; var y = "5"; var z = x + y; // z 中的结果是 "105"
ຄວາມຜິດພາດຂອງອັດຕານີ
ພວກມັນຈະບັນທຶກໃນ 64 ບຸນບາດໃນ JavaScriptການຄົ້ນຄວ້າຂອງຈຳນວນສະເພາະການກະຈາຍ。
ທຸກພະຍານການກົດຫມາຍທຸກຢ່າງໃນ JavaScript
var x = 0.1; var y = 0.2; var z = x + y // z 中的结果并不是 0.3
ເພື່ອແກ້ໄຂບັນຫານັ້ນ,ກະຕຸ້ນນຳໃຊ້ການກະຕຸ້ນການກະຈາຍ
ຄວາມນັບນິວ
var z = (x * 10 + y * 10) / 10; // z 中的结果将是 0.3
ການສະແດງຄືນຄຳສັບການ JavaScript
JavaScript ອະນຸຍາດໃຫ້ຄຳສັ່ງສະແດງຄືນເປັນສອງປະເພດ:
ຕົວຢ່າງ 1
var x = "Hello World!";
ແຕ່ວ່າການສະແດງຄືນໃນຄຳສັບການທີ່ຢູ່ບາງບ່ອນບໍ່ຖືກຕ້ອງ
ຕົວຢ່າງ 2
var x = "Hello World!";
ຖ້າຕ້ອງສະແດງຄືນໃນຄຳສັບການ
ຕົວຢ່າງ 3
var x = "Hello ", World!";
ສັນຍາການສະແດງຄືນທີ່ຜິດທີ່ຕັ້ງຢູ່
ຍ້ອນວ່າມີສັນຍາການສະແດງຄືນທີ່ຜິດ
if (x == 19); { // code block }
ການສະແດງຄຳສັ່ງ return
ການປິດຄຳສັ່ງທີ່ທີ່ຫຼັງແມ່ນພົບການປະຕິບັດຄືນຈາກ JavaScript
ຍ້ອນວ່າຕົວຢ່າງດຽວກັນຈະກັບຄືນຕົວຢ່າງດຽວກັນ:
ຕົວຢ່າງ 1
function myFunction(a) { var power = 10 return a * power }
ຕົວຢ່າງ 2
function myFunction(a) { var power = 10; return a * power; }
JavaScript ຈະອະນຸຍາດໃຫ້ຄຳສັ່ງສະແດງຄືນເປັນສອງປະເພດ.
ຍ້ອນວ່າຕົວຢ່າງ 3 ຈະກັບຄືນຕົວຢ່າງດຽວກັນ:
ຕົວຢ່າງ 3
function myFunction(a) { var power = 10; return a * power; }
ແຕ່ຖ້າພົບຫຍັງ return
ພົບຫຍັງຖ້າຄຳສັ່ງສະແດງຄືນເປັນສອງປະເພດ?
ຕົວຢ່າງ 4
function myFunction(a) { var power = 10; return a * power; }
ການກັບຄືນຂອງຕົວຢ່າງນັ້ນແມ່ນ: undefined
!
ເປັນຫຍັງ? ຍ້ອນວ່າ JavaScript ພິຈະລະນາວ່າ
ຕົວຢ່າງ 5
function myFunction(a) { var power = 10; return; a * power; }
ການອະທິບາຍ
ຖ້າຄຳສັ່ງບໍ່ແມ່ນຄຳສັ່ງທີ່ສົມບູນ:
var
JavaScript ຈະສະໜອງຄຳສັ່ງນັ້ນດ້ວຍການອ່ານປະເພດປະຈຳຈົນກັນ
power = 10;
ແຕ່ຍ້ອນຄຳສັ່ງນັ້ນເປັນຄຳສັ່ງທີ່ສົມບູນ:
return
JavaScript ຈະປິດຄຳສັ່ງນັ້ນອອກໂດຍອົງການຕອບສະໜອງ
return;
ການເກີດຂອງຄຳສັ່ງນັ້ນເປັນຍ້ອນວ່າໃນ JavaScript
JavaScript ຈະປິດຄຳສັ່ງທີ່ທີ່ຫຼັງ return
ຄຳສັ່ງນັ້ນເອງແມ່ນຄຳສັ່ງທີ່ສົມບູນ
ແຕ່ບໍ່ຕ້ອງການກັບ return
ຄຳສັ່ງສະແດງຄືນ
ການເຂົ້າເຖິງອາກາດດ້ວຍບັນທານຊື່
ຫຼາຍວິທະຍາສາດນຳໃຊ້ Array ທີ່ມີບັນດາຄຳສິນຊື່
Array ທີ່ມີບັນດາຄຳສິນຊື່ເອີ້ນວ່າ Array Associated (ຫຼື Hash)
JavaScript ບໍ່ສາມາດນຳໃຊ້Array ທີ່ມີບັນດາຄຳສິນຊື່
ໃນ JavaScriptArrayນຳໃຊ້ບັນດາຄຳສິນທີ່ເປັນຈຳນວນ:
ຄວາມນັບນິວ
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 46; var x = person.length; // person.length ຈະກັບຄື 3 var y = person[0]; // person[0] ຈະກັບຄື "Bill"
ໃນ JavaScriptObjectນຳໃຊ້ບັນດາຄຳສິນຊື່。
ຖ້າທ່ານນຳໃຊ້ບັນດາຄຳສິນຊື່ໃນການເຂົ້າຫາວັດສະດຸແບບສະເພາະຈະເຮັດໃຫ້ JavaScript ປ່ຽນຊະນວນວັດສະດຸເປັນວັດສະດຸແບບເປັນປະເພດເອກະສານ
ຫຼັງຈາກການປ່ຽນຊະນວນຄືນຢ່າງອັດຕະພາບໃນການນຳໃຊ້ວິທີການຫຼືບັນດາລະບຽບຂອງວັດສະດຸຈະສ້າງຄື "undefined" ຫຼື "incorrect"
ຄວາມນັບນິວ
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 46; var x = person.length; // person.length ຈະກັບຄື 0 var y = person[0]; // person[0] ຈະກັບຄື "undefined"
ນຳໃຊ້ຄຳສິນທີ່ສິນຫຼັງເພື່ອສິ້ນສຸດການອະທິບາຍ
ຄຳສິນຫຼັງພາຍໃນການອະທິບາຍ Object ແລະ Array ແມ່ນຖືກອະນຸຍາດໃນ ECMAScript 5
ຄວາມຍັງມີຢ່າງດັ່ງກ່າວ
person = {firstName:"Bill", lastName:"Gates", age:62,}
ຄວາມຍັງມີຢ່າງດັ່ງກ່າວ
points = [35, 450, 2, 7, 30, 16,];
ເຕືອນ !!
Internet Explorer 8 ຈະລົ້ມ
JSON ບໍ່ອະນຸຍາດຄຳສິນທີ່ສິນຫຼັງ
JSON:
person = {firstName:"Bill", lastName:"Gates", age:62}
JSON:
points = [35, 450, 2, 7, 30, 16];
Undefined ບໍ່ແມ່ນ Null
JavaScript Object, Variable, Property, Method ສາມາດບໍ່ມີຄວາມຈິງ
ຍັງມີຄວາມສາມາດສຳລັບບັນດາວັດສະດຸ JavaScript ທີ່ບໍ່ມີຄວາມຈິງ null
。
ນີ້ອາດຈະເຮັດໃຫ້ການທົດລອງວ່າບັນດາວັດສະດຸມີຢູ່ຫຼືບໍ່ຈະມີຍາກຫຼາຍ
ທ່ານສາມາດທົດລອງວ່າປະເພດມີ undefined
ການທົດລອງວ່າບັນດາວັດສະດຸມີຢູ່ຫຼືບໍ່
ຄວາມນັບນິວ
if (typeof myObj === "undefined")
ມັນບໍ່ສາມາດທົດສອບວ່າວັດຖຸມີອາການຫນັງໄວ້ຫຼືບໍ່: null
ຍ້ອນວ່າຖ້າວັດຖຸບໍ່ມີອາການຫນັງໄວ້ຈະປະກາດຄຳຜິດພາດ:
ທີ່ບໍ່ຖືກຕ້ອງ:
if (myObj === null)
ເພື່ອແກ້ໄຂບັນຫານີ້ຕ້ອງທົດສອບວ່າວັດຖຸມີອາການຫນັງໄວ້ຫຼືບໍ່: null
ບໍ່ແມ່ນ undefined.
ດ້ວຍນັ້ນຈະມີຄວາມຜິດພາດດັ່ງກ່າວ:
ທີ່ບໍ່ຖືກຕ້ອງ:
if (myObj !== null && typeof myObj !== "undefined")
ຖ້າທີ່ຈະທົດສອບບໍ່ມີອາການຫນັງໄວ້ກ່ອນ:
ທີ່ຖືກຕ້ອງ:
if (typeof myObj !== "undefined" && myObj !== null)
ບໍ່ຄິດວ່າພາກການວົງ.
JavaScript ບໍ່JavaScript ຈະສ້າງພາກຂອງພາກການນັກງານວິກິດຫາການສ້າງກິດບັດ.
ຫລາຍຄົນພັດທະນາແມ່ນແຕ່: ບໍ່ແມ່ນຫລາຍຂຶ້ນ。
ຄິດວ່າວິກິດນີ້ຈະກັບຄືວ່າ: undefined
,ເປັນຄວາມຜິດພາດທີ່ພົບຫລາຍຂອງນັກພັດທະນາ JavaScript ທຳມະດາ:
ຄວາມນັບນິວ
for (var i = 0; i < 10; i++) { // ກິດບັດວິກິດ } return i;
- ຫົນຫລັງ JS ການປະຕິບັດທີ່ດີທີ່ສຸດ
- ຫົນຕໍ່ໄປ JS ການປະຕິບັດ