亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

JavaScript菜鳥教程

JavaScript 對象

JavaScript 函數(shù)

JS HTML DOM

JS 瀏覽器BOM

AJAX 菜鳥教程

JavaScript 參考手冊

JavaScript 實踐經(jīng)驗

每個人編寫JavaScript的方式都有些不同。但是還有很多共同之處,以下是一組相當(dāng)簡單的JavaScript編寫經(jīng)驗指南和注意事項,讓您少走彎路。

避免全局變量

盡量減少使用全局變量。這包括所有數(shù)據(jù)類型,對象和功能。

全局變量和函數(shù)可以被其他腳本覆蓋。所以請改用局部變量。

局部變量必須使用let,constvar關(guān)鍵字聲明,否則會成為全局變量。

始終聲明變量

在聲明變量和常量時,請使用letconst關(guān)鍵字,而不是var。

  // 推薦:
  let myAge = 22;
  const myName = "(cainiaoplus.com)";
  
  // 不推薦:
  var myAge = 22;
  var myName = "(cainiaoplus.com)";

這樣做有很多充分的理由-例如,它避免了由于意外重新分配而引起的問題,并避免了會影響可讀性的提升。

將所有聲明放在每個腳本或函數(shù)的頂部是一種很好的編程做法。

下面提供更簡潔的代碼,并在代碼開頭提供一個查找所有變量的地方。

  // 聲明寫在最前面
  let firstName, lastName, price, discount, fullPrice;
  
  // 使用
  firstName = "(cainiaoplus.com)";
  lastName = "Choudhary";
  
  price = 26.90;
  discount = 1.25;
  
  fullPrice = price * 100 / discount;

使用擴展語法

為了最大程度地提高可讀性,我們使用擴展語法,將JS的每一行都換行。

  // 推薦:
  function myFunc() {
  console.log("Parrot Tutorial");
  }
  
  // 不推薦:
  function myFunc() { console.log("Parrot Tutorial"); }

您應(yīng)該在運算符和操作數(shù),參數(shù)等之間使用空格:

  // 這更具可讀性
  if(dayOfWeek === 7 && weather === "sunny") {
  /* Some code */
  }
  
  // 可讀性較差
  if(dayOfWeek===7&&weather==="sunny"){
  /* Some code */
  }

不要將數(shù)字,字符串或布爾值聲明為對象

始終將數(shù)字,字符串或布爾值視為原始值。不作為對象。

將這些類型聲明為對象會降低執(zhí)行速度,并產(chǎn)生意外結(jié)果。

var str1 = "New Delhi";
var str2 = new String("New Delhi");

document.write(str1 === str2); // 返回 false because str1 and str2 have different types
測試看看?/?

無法比較對象:

var str1 = new String("New Delhi");
var str2 = new String("New Delhi");

document.write(str1 == str2); // 返回false,因為str1和str2是不同的對象
document.write(str1 === str2); // 返回false,因為str1和str2是不同的對象
測試看看?/?

不要使用new Object()

  • 使用{}代替new Object()

  • 使用""代替new String()

  • 使用0代替new Number()

  • 使用false代替new Boolean()

  • 使用[]代替new Array()

  • 使用/()/代替new RegExp()

  • 使用function (){}代替new Function()

let x1 = {};
let x2 = "";
let x3 = 0;
let x4 = false;
let x5 = [];
let x6 = /()/;
let x7 = function(){};
測試看看?/?

當(dāng)心自動類型轉(zhuǎn)換

JavaScript是一種松散類型或動態(tài)語言。JavaScript中的變量并不直接與任何特定的值類型相關(guān)聯(lián),并且可以為所有變量分配(并重新分配)所有類型的值。

var x = 20; // x is now a Number
x = "(cainiaoplus.com)";   // x is now a String
x = true;   // x is now a Boolean
測試看看?/?

在進行數(shù)學(xué)運算時,JavaScript可以將數(shù)字轉(zhuǎn)換為字符串:

num = 50 + 10;// 返回 60,  typeof num is a number
num = 50 + "10";  // 返回 "5010",  typeof num is a string
num = "50" + 10;  // 返回 "5010",  typeof num is a string
num = "50" - 10;  // 返回 "40",typeof num is a number
測試看看?/?

請注意,數(shù)字可能會意外轉(zhuǎn)換為NaN(非數(shù)字):

num = 50 * "Parrot";  // 返回 "NaN",   typeof num is a number
測試看看?/?

使用嚴(yán)格比較

==比較操作總是比較之前轉(zhuǎn)換(以匹配類型)。

該===全等運算符強制值和類型的比較。

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

使用模板常量

要將值插入字符串,請使用模板常量(` `)。

  // 推薦:
  let myName = 'cainiaoplus.com';
  console.log(`Hi! I'm ${myName}!`);
  
  // 不推薦:
  let myName = 'cainiaoplus.com';
  console.log('Hi! I\'m' + myName + '!');

通用循環(huán)

當(dāng)使用forfor...infor...of循環(huán),確保正確定義初始化,用let關(guān)鍵字。

  let fruits = ["Apple", "Mango", "Banana"];
  
  // 推薦:
  for(let i of fruits) {
   console.log(i);
  }
  
  // 不推薦:
  for(i of fruits) {
   console.log(i);
  }

還請記?。?/p>

  • 循環(huán)關(guān)鍵字與其左括號之間不應(yīng)有空格

  • 括號和花括號之間應(yīng)有一個空格

函數(shù)命名

對于函數(shù)名稱,請使用lowerCamelCasing,并在適當(dāng)?shù)牡胤绞褂煤喢饕锥恼Z義名稱。

  // 推薦:
  function sayHello() {
  alert('Hello!');
  }
  
  // 不推薦:
  function sayhello() {
  alert('Hello!');
  }

使用默認(rèn)值結(jié)束switch

switch始終以default:結(jié)尾。即使您認(rèn)為沒有必要。

var day;
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 = "Undefined Day";
}
測試看看?/?

錯誤處理

如果程序的某些狀態(tài)拋出未捕獲的錯誤,它們將停止執(zhí)行并可能降低示例的實用性。

因此,您應(yīng)該使用try...catch塊來捕獲錯誤。

  try {
  console.log(results);
  }
  catch(e) {
  console.error(e);
  }