溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaScript命名如何約定

發(fā)布時間:2022-03-19 14:07:40 來源:億速云 閱讀:213 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“JavaScript命名如何約定”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1. 變量的命名約定

JavaScript 變量名稱是區(qū)分大小寫的,大寫和小寫字母是不同的。比如:

let DogName = 'Scooby-Doo';
let dogName = 'Droopy';
let DOGNAME = 'Odie';
console.log(DogName);   // "Scooby-Doo"
console.log(dogName);   // "Droopy"
console.log(DOGNAME);   // "Odie"

但是,最推薦的聲明 JavaScript 變量的方法是使用駝峰式變量名。我們可以對JavaScript 所有類型的變量使用駝峰式命名約定,這樣就不會相同命名的變量。

// bad
let dogname = 'Droopy'; 
// bad
let dog_name = 'Droopy'; 
// bad
let DOGNAME = 'Droopy'; 
// bad
let DOG_NAME = 'Droopy'; 
// good
let dogName = 'Droopy';

變量的名稱應(yīng)該是不言自明的,并描述了儲存的值。例如,如果需要一個變量來儲存狗的名字,應(yīng)該使用 dogName 而不是 Name,因為 dogNam 更有意義:

// bad
let d = 'Droopy';
// bad
let name = 'Droopy';
// good
let dogName = 'Droopy';

2. 布爾值的命名約定

當(dāng)定義布爾類型的變量時,應(yīng)該使用is或者h(yuǎn)as作為變量的前綴。例如,如果需要一個變量來檢查狗是否有主任,應(yīng)該使用 hasOwner 來最為變量名:

// bad
let bark = false;
// good
let isBark = false;

// bad
let ideal = true;
// good
let areIdeal = true;

// bad
let owner = true;
// good
let hasOwner = true;

3. 函數(shù)的命名約定

JavaScript 中函數(shù)的名稱也是區(qū)分大小寫的。因為在聲明函數(shù)時,推薦使用駝峰式方法來命名函數(shù)。

除此之外,推薦使用描述性名詞和動詞來作為前綴。例如,如果聲明一個函數(shù)來獲取名稱,則函數(shù)名字應(yīng)該是 getName:

// bad
function name(dogName, ownerName) { 
  return '${dogName} ${ownerName}';
}

// good
function getName(dogName, ownerName) { 
  return '${dogName} ${ownerName}';
}

4. 常量的命名約定

JavaScript 中的常量和變量是一樣的,都區(qū)分大小寫,在定義常量時,推薦使用大寫,因為它們是不變的變量。

const LEG = 4;
const TAIL = 1;
const MOVABLE = LEG + TAIL;

如果變量聲明名稱中包含多個單詞,就應(yīng)該使用 UPPER_SNAKE_CASE。

const DAYS_UNTIL_TOMORROW = 1;

5. 類的命名約定

JavaScript 中類的命名約定規(guī)則與函數(shù)非常相似,推薦使用描述性的名稱來描述類的功能。

函數(shù)名和類名之間的主要區(qū)別在于類名要使用大寫開頭:

class DogCartoon { 
  constructor(dogName, ownerName) { 
    this.dogName = dogName; 
    this.ownerName = ownerName; 
  }
}

const cartoon = new DogCartoon('Scooby-Doo', 'Shaggy');

6. 組件的命名規(guī)則

JavaScript 組件廣泛應(yīng)用于React、Vue等前端框架中。組件的命名建議與類保持一致,使用開頭大寫的駝峰式命名法:

// bad
function dogCartoon(roles) { 
  return ( 
    <div> 
      <span> Dog Name: { roles.dogName } </span> 
      <span> Owner Name: { roles.ownerName } </span> 
    </div> 
  );
} 

// good
function DogCartoon(roles) { 
  return ( 
    <div> 
      <span> Dog Name: { roles.dogName } </span> 
      <span> Owner Name: { roles.ownerName } </span> 
    </div> 
  );
}

由于組件的命名開頭字母是大寫,因此在使用時,就很容易和HTML、屬性值等區(qū)分開來:

<div> 
  <DogCartoon 
    roles={{ dogName: 'Scooby-Doo', ownerName: 'Shaggy' }} 
  />
</div>

7. 方法的命名約定

這里說的方法指的是類中方法,在 JavaScript 中,類的方法和函數(shù)的結(jié)構(gòu)是非常類似的,因此,命名約定規(guī)則也是一樣的。

推薦需要使用駝峰式方法來聲明 JavaScript 方法,并使用動詞作為前綴,使方法名稱更有意義:

class DogCartoon {
  constructor(dogName, ownerName) { 
    this.dogName = dogName; 
    this.ownerName = ownerName; 
  }

  getName() { 
    return '${this.dogName} ${this.ownerName}'; 
  }
}

const cartoon= new DogCartoon('Scooby-Doo', 'Shaggy');

console.log(cartoon.getName());   // "Scooby-Doo Shaggy"

8. 私有函數(shù)的命名約定

下劃線 (_) 在 MySQL 和 PHP 等語言中廣泛用于定義變量、函數(shù)和方法。但在 JavaScript 中,下劃線用于表示私有變量或函數(shù)。

例如,有一個私有函數(shù)名 toonName,則可以通過添加下劃線作為前綴 (_toonName) 來將其表示為私有函數(shù)。

class DogCartoon { 
  constructor(dogName, ownerName) { 
    this.dogName = dogName; 
    this.ownerName = ownerName; 
    this.name = _toonName(dogName, ownerName); 
  } 
  _toonName(dogName, ownerName) { 
    return `${dogName} ${ownerName}`; 
  } 
}

const cartoon = new DodCartoon('Scooby-Doo', 'Shaggy'); 

// good
const name = cartoon.name;
console.log(name);   // "Scooby-Doo Shaggy" 

// bad
name =cartoon._toonName(cartoon.dogName, cartoon.ownerName);
console.log(name);   // "Scooby-Doo Shaggy"

9. 全局變量的命名約定

對于 JavaScript 全局變量,沒有特定的命名標(biāo)準(zhǔn)。建議對可變?nèi)肿兞渴褂民劮迨酱笮懙姆绞?,對不可變?nèi)謱ο笫褂么髮憽?/p>

10. 文件名的命名約定

大多數(shù) Web 服務(wù)器(Apache、Unix)在處理文件時都區(qū)分大小寫。例如,flower.jpg 和 Flower.jpg 是不一樣的。

但是,如果從不區(qū)分大小寫的服務(wù)器切換到區(qū)分大小寫的服務(wù)器,即使是一個小錯誤也可能導(dǎo)致網(wǎng)站崩潰。

因此,盡管它們是支持區(qū)分大小寫的,建議在所有服務(wù)器中還是使用小寫來命名文件。

附:正確案例

同時應(yīng)用所有規(guī)則,我們得到如下函數(shù):

function getAccountsTotalBalance(accounts) {
  let totalBalance = 0;
  for (let accountIndex = 0; accountIndex < accounts.length; accountIndex++) {
    totalBalance += accounts[accountIndex].balance;
  }

  return totalBalance;
}

雖然accountIndex與i可能存在爭議,但函數(shù)的其余部分應(yīng)該更清楚。getAccountsTotalBalance完全傳達(dá)了函數(shù)的意圖,前綴get表示它不會導(dǎo)致任何突變。為了讀者的利益,代碼作者投入更多的精力是值得的。6個月后,當(dāng)他們維護(hù)代碼時,你未來的自己會感激他們所做的額外工作。

如果擔(dān)心行長度,可以考慮使用Prettier之類的工具來自動格式化代碼。

“JavaScript命名如何約定”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI