ການປະຕິບັດພື້ນຖານ JavaScript

ຂໍ້ສະເໜີວ່າຫຼຸດຄວາມນຳໃຊ້ຄູ່ມືສາກົນnew=====eval()

ຫຼຸດຄວາມນຳໃຊ້ຄູ່ມືສາກົນ

ຂໍ້ສະເໜີວ່ານຳໃຊ້ຄູ່ມືສາກົນຫຼາຍຢ່າງຫຼາຍ

ລວມທັງທຸກຊະນິດຂອງຂໍ້ມູນທຸກຊະນິດແລະວິການ

ຄູ່ມືສາກົນແລະວິການກວດສອບສາມາດຖືກປົກປັກຮັບໂດຍຄືນລິກະສັບຫຼືວິການອື່ນ

ກຳລັງນຳໃຊ້ຄູ່ມືທີ່ຢູ່ພາຍໃນພາກພື້ນແທນບໍ່ມີຄູ່ມືສາກົນແລະຮຽນການນຳໃຊ້ຄູ່ມືທີ່ຢູ່ພາຍໃນພາກພື້ນ

ປະກາດຄູ່ມືທີ່ຢູ່ພາຍໃນພາກພື້ນຕໍ່ຕໍ່

ທຸກຄູ່ມືທີ່ນຳໃຊ້ໃນພາກພື້ນວິການຄວນຖືກປະກາດທີ່ຢູ່ພາຍໃນພາກພື້ນຄູ່ມື

ຄູ່ມືທີ່ຢູ່ພາຍໃນພາກພື້ນຕ້ອງເພື່ອ var ທີ່ຈະປະກາດໂດຍຄຳປະກອບສະເພາະ ບໍ່ຕ້ອງພົບບໍ່ມີຄຳປະກອບນັ້ນຈະກາຍເປັນຄູ່ມືສາກົນ

ກົດລະບຽບຂັ້ນວົງງານບໍ່ອະນຸຍາດຄູ່ມືທີ່ບໍ່ໄດ້ປະກາດ

ປະກາດໃນທິດສະຫຼຸບ

ການປະກອບຄູ່ມືທີ່ດີແມ່ນຖືກພິຈາລະນາໃຫ້ທັງໝົດການປະກາດຄູ່ມືຕັ້ງໃນທິດສະຫຼຸບຂອງແຕ່ລະຄືນລິກະສັບຫຼືວິການ

这么做的好处是:

  • ມີການຄວາມສະຫຼາຍຢ່າງຫຼາຍຂອງວິສະວະກອນ
  • ຕັ້ງໃຫ້ມີສະຖານທີ່ທີ່ດີເພື່ອຊອກຫາຄູ່ມືທີ່ຢູ່ພາຍໃນພາກພື້ນ
  • ຄວາມຫຼາຍຢ່າງຫຼາຍໃນການຫຼຸດຄວາມສະຫຼາຍຂອງຄູ່ມືສາກົນ
  • ຫຼຸດຄວາມເປັນໄປໄດ້ຂອງການປະກາດຂັ້ນຕົ້ນຫຼາຍຢ່າງຫຼາຍ
// ປະກາດໃນທິດສະຫຼຸບ
var firstName, lastName, price, discount, fullPrice;
// ຈະນຳໃຊ້ຫຼັງກ່າວ
firstName = "Bill";
lastName = "Gates";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;

ກໍ່ສາມາດນຳໃຊ້ໃນລະຫວ່າງການລະລາຍ:

// ປະກາດໃນທິດສະຫຼຸບ
var i;
// ຈະນຳໃຊ້ຫຼັງກ່າວ
for (i = 0; i < 5; i++)  {

ໂດຍປົກກະຕິ JavaScript ຈະຍ້າຍທັງໝົດການປະກາດໄປທິດສະຫຼຸບ (JavaScript hoisting)

ການກະຕຸ້ມຄູ່ມື

在您声明变量时对其进行初始化是个好习惯。

这么做的好处是:

  • 更整洁的代码
  • 在单独的位置来初始化变量
  • 避免未定义值
// 在开头进行声明和初始化
var firstName = "",
    lastName  = "",
    price = 0,
    discount = 0,
    fullPrice  = 0,
    myArray = [],
    myObject = {};

变量初始化使我们能够了解预期用途和预期的数据类型。

请不要声明数值、字符串或布尔对象

请始终将数值、字符串或布尔值视作原始值。而非对象。

如果把这些类型声明为对象,会拖慢执行速度,并产生讨厌的副作用:

ຄວາມຈິງ

var x = "Bill";             
var y = new String("Bill");
(x === y) // 结果为 false,因为 x 是字符串,而 y 是对象。

ທ້າທາຍຕົວເອງ

或者甚至更糟:

ຄວາມຈິງ

var x = new String("Bill");             
var y = new String("Bill");
(x == y) // 结果是 false,因为你无法比较对象。

ທ້າທາຍຕົວເອງ

请勿使用 new Object()

  • 请使用 {} 来代替 new Object()
  • 请使用 "" 来代替 new String()
  • 请使用 0 来代替 new Number()
  • 请使用 false 来代替 new Boolean()
  • 请使用 [] 来代替 new Array()
  • 请使用 /()/ 来代替 new RegExp()
  • 请使用 function (){}来代替 new Function()

ຄວາມຈິງ

var x1 = {};           // 新对象
var x2 = "";           // 新的原始字符串值
var x3 = 0;            // 新的原始数值
var x4 = false;        // 新的原始布尔值
var x5 = [];           // 新的数组对象
var x6 = /()/;         // 新的正则表达式
var x7 = function(){}; // 新的函数对象

ທ້າທາຍຕົວເອງ

ລະວັງວ່າມີການປ່ຽນຕົວເລກສາມາດອີກ.

ລະວັງວ່າຈຳນວນສາມາດຖືກເຊື່ອມຕໍ່ຄືກັບຄຳເວົ້າຫຼື NaN(ບໍ່ໄດ້ເປັນຈຳນວນ).

JavaScript ໄດ້ເປັນບັນດາບາງຕົວເລກປະລິມານຢ່າງຫຼາຍ. ບັນດາບາງຕົວເລກສາມາດກວມມາດຕະຖານຂໍ້ມູນຫຼາຍຊະນິດ, ແລະບັນດາບາງຕົວເລກສາມາດປ່ຽນຕົວເລກສາມາດຫຼາຍຊະນິດ:

ຄວາມຈິງ

var x = "Hello";     // typeof x ຈະຢູ່ທີ່ມາກົດ
x = 5;               // ປ່ຽນ typeof x ເປັນສະບາຍອັນ

ທ້າທາຍຕົວເອງ

ຖ້າຈະດຳເນີນການການຄວາມຈິງ, JavaScript ສາມາດປ່ຽນຄູ່ມືເປັນຕາມຄືນ:

ຄວາມຈິງ

var x = 5 + 7;       // x.valueOf() ກັບ 12, typeof x ຈະຢູ່ທີ່ສະບາຍອັນ
var x = 5 + "7";     // x.valueOf() ກັບ 57, typeof x ຈະຢູ່ທີ່ມາກົດ
var x = "5" + 7;     // x.valueOf() ກັບ 57, typeof x ຈະຢູ່ທີ່ມາກົດ
var x = 5 - 7;       // x.valueOf() ກັບ -2, typeof x ຈະຢູ່ທີ່ສະບາຍອັນ
var x = 5 - "7";     // x.valueOf() ກັບ -2, typeof x ຈະຢູ່ທີ່ສະບາຍອັນ
var x = "5" - 7;     // x.valueOf() ກັບ -2, typeof x ຈະຢູ່ທີ່ສະບາຍອັນ
var x = 5 - "x";     // x.valueOf() ກັບ NaN, typeof x ຈະຢູ່ທີ່ສະບາຍອັນ

ທ້າທາຍຕົວເອງ

ການຕັດສິນວຽກສະແດງຄືນຈະບໍ່ມີຄວາມຜິດພາດຫນືງມາຈະກັບຄືນ NaN(Not a Number):

ຄວາມຈິງ

"Hello" - "Dolly"    // ກັບຄືນ NaN

ທ້າທາຍຕົວເອງ

ນຳໃຊ້ === ຂຽບຂອງການປຽບທຽບ

== ຜູ້ປະສົມຈະປິ່ນປົວຊະນິດຢ່າງຫນຶ່ງດຽວກ່ອນທີ່ຈະປຽບທຽບ.

===== ຜູ້ປະສົມຈະກະຕຸ້ມການປຽບທຽບຄູ່ມືແລະຊະນິດຢ່າງຫນຶ່ງດຽວ.

ຄວາມຈິງ

0 == "";        // true
1 == "1";       // true
1 == true;      // true
0 === "";       // false
1 === "1";      // false
1 === true;     // false

ທ້າທາຍຕົວເອງ

Parameter Defaults

ຖ້າຂີ້ຍິນຍອມບໍ່ມີຄຳຕິດຕາມໜຶ່ງ, ຈະກະກຽມຄຳຕິດຕາມທີ່ສູນກັນເປັນ undefined

undefined ຈະທຳລາຍລະບຽບຂອງເຈົ້າ.ການກຳນົດຄູ່ມືລະບຽບເປັນການບໍ່ພິສູດ.

ຄວາມຈິງ

function myFunction(x, y) {
    if (y === undefined) {
        y = 0;
    }
}

ທ້າທາຍຕົວເອງ

ກະຈາຍການສະແດງຄວາມຄົງທີ່ຂອງຕົວອາດິດສະຫຼະການບອກກ່ຽວກັບການສະແດງຄວາມຄົງທີ່ຂອງຕົວອາດິດສະຫຼະການພາຍໃນບົດນີ້.

ກະຈາຍ default ເພື່ອສຳເລັດ switch

ກະຈາຍ default ເພື່ອສຳເລັດ switch ຄຳຂໍ້. ເຖິງວ່າເຈົ້າຮູ້ວ່າບໍ່ມີຄວາມຈຳເປັນທີ່ຈະມີມັນ.

ຄວາມຈິງ

switch (new Date().getDay()) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
         break;
    case 2:
        day = "Tuesday";
         break;
    case 3:
        day = "Wednesday";
         break;
    case 4:
        day = "Thursday";
         break;
    case 5:
        day = "Friday";
         break;
    case 6:
        day = "Saturday";
         break;
    default:
        day = "Unknown";
} 

ທ້າທາຍຕົວເອງ

ຫຼີກລ່ຽງການໃຊ້ eval()

eval() ການໃຊ້ຕົວອາດິດສະຫຼະການທີ່ຈະປ່ຽນຄວາມຕາມການນຳໃຊ້ທາງຄວາມລັບ. ໃນທຸກການນຳໃຊ້, ບໍ່ມີຄວາມຈຳເປັນທີ່ຈະໃຊ້ມັນ.

ຍ້ອນອາດອະນຸຍາດໃຫ້ການເຮັດວຽກທີ່ບໍ່ຄອງຄິດ, ມັນຍັງໄດ້ຮູບຮ່າງຄວາມສ່ຽງທາງຄວາມລັບ.