欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript命名約定(變量?函數(shù)?類?組件)

 更新時間:2023年08月09日 17:07:06   作者:小辭  
這篇小文章主要是通過一些例子來介紹一些Javascript中一些關(guān)于命名變量,函數(shù),類或者是組件的通用約定,雖然這些規(guī)則并不是強(qiáng)制性的,但是呢,他們卻被一些JS社區(qū)所廣泛采用,所以,了解他們還是很有必要的

Javascript命名約定:變量

由于Javascript是大小寫敏感的,因此,如果有幾個變量,其僅僅是大小寫不一樣,這些變量在Javascript中會被理解為是不同的變量,如下所示:

var name = 'Robin Wieruch';
var Name = 'Dennis Wieruch';
var NAME = 'Thomas Wieruch';
console.log(name);
// "Robin Wieruch"
console.log(Name);
// "Dennis Wieruch"
console.log(NAME);
// "Thomas Wieruch"

一個好的javascript變量名是應(yīng)該能描述出他這個變量所代表的含義,因此,一般情況下,如果變量名足夠清晰的話,給其增加一個注釋可能沒太多必要。

// bad
var value = 'Robin';
// bad
var val = 'Robin';
// good
var firstName = 'Robin';

大部分情況,你會發(fā)現(xiàn)javascript是會以駝峰的形式命名,并且其首字母是小寫的

// bad
var firstname = 'Robin';
// bad
var first_name = 'Robin';
// bad
var FIRSTNAME = 'Robin';
// bad
var FIRST_NAME = 'Robin';
// good
var firstName = 'Robin';

不過javascript的常量,私有變量,類或者是組件的命名規(guī)則與其略有不同,我們會在下面分別介紹他們。

然而,在通常情況下,javascript的變量,不管是字符串,布爾類型,還是數(shù)字類型,對象,數(shù)組,函數(shù),他們都是遵循駝峰的命名方式的。

現(xiàn)在簡要描述一下常見的幾種大小寫命名的不同

camelCase (駝峰命名法,單詞相連,第一個單詞首字母小寫,其他單詞首字母大寫) 被用在js中

PascalCase(帕斯卡命名法,單詞相連,單詞首字母大寫) 被用于js中

snake_case(蛇形命名法,單詞間以下劃線分隔)

kebab-case(烤串命名法,單詞間以中橫線分隔)

Javascript命名約定:布爾值

布爾值的變量通常來說,一般以is,are,has等表示判斷意義的單詞作為其前綴,以便讓開發(fā)者更好的和其他類型的變量區(qū)分開來,來看例子:

// bad
var visible = true;
// good
var isVisible = true;
// bad
var equal = false;
// good
var areEqual = false;
// bad
var encryption = true;
// good
var hasEncryption = true;

當(dāng)然啦,這種命名方式也算是一種軟規(guī)則,并不是強(qiáng)制要求的。

javascript命名約定:函數(shù)

函數(shù)一般也是以駝峰的方式來命名,不過,最好是在函數(shù)前面加一些特定的動詞前綴,來明確的告訴開發(fā)者此函數(shù)的作用。

// bad
function name(firstName, lastName) {
    return `${firstName} ${lastName}`;
}
// good
function getName(firstName, lastName) {
    return `${firstName} ${lastName}`;
}

當(dāng)然啦,函數(shù)名前面的動詞前綴一般來說是沒什么限制的(比如get,post,fetch,push,complete,calculate,compute等這些都可以)。這其實也是javascript變量的另一個軟規(guī)則,主要就是用來讓其名稱變得更加的具有描述性,更容易理解。

javascript命名約定:類

與其它的數(shù)據(jù)結(jié)構(gòu)相比,在javascript中的類一般是通過帕斯卡命名法(PascalCase)來定義的

class SoftwareDeveloper {
    constructor(firstName, lastName) {
    this.firstName = firstName;
        this.lastName = lastName;
    }
}
var me = new SoftwareDeveloper('Robin', 'Wieruch');

由于在類定義的時候就使用了帕斯卡命名法,因此每次通過構(gòu)造器來創(chuàng)建一個類的新的實例的時候,其構(gòu)建所用到的那個類的名稱都是符合帕斯卡命名。

javascript命名約定:組件

組件并不是特別的常見,但是他一般情況下經(jīng)常會用在一些像react這樣的前端框架中,由于組件是可以實例化的,并且一般都是出現(xiàn)在DOM中,跟類有一點像。因此其也是采用帕斯卡命名法(PascalCase)的方式。

// bad
function userProfile(user) {
    return (
        <div>
            <span>First Name: {user.firstName}</span>
            <span>Last Name: {user.lastName}</span>
        </div>
    );
}
// good
function UserProfile(user) {
    return (
        <div>
            <span>First Name: {user.firstName}</span>
            <span>Last Name: {user.lastName}</span>
        </div>
    );
}

當(dāng)組件被使用的時候,為了和普通的html元素做區(qū)分,所以一般來說其使用的時候也需要首字母大寫。

<div>
    <UserProfile
        user={{ firstName: 'Robin', lastName: 'Wieruch' }}
    />
</div>

javascript命名約定:方法

和javascript的函數(shù)相同,類中的方法的命名也是駝峰式的。

class SoftwareDeveloper {
    constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
    getName() {
        return `${this.firstName} ${this.lastName}`;
    }
}
var me = new SoftwareDeveloper('Robin', 'Wieruch');
console.log(me.getName());
// "Robin Wieruch"

類中方法的命名規(guī)則和函數(shù)的一樣,也是以動詞作為前綴,使其具有更好的描述性。

javascript命名約定:私有變量/私有函數(shù)/私有方法

一般情況下,你在函數(shù),變量或者是方法定義中,很少能看到以下劃線作為前綴(_)開頭的命名方式,如果有的話,一般來說他們都是私有的。雖然他不是javascript的一個強(qiáng)制的規(guī)則,但是一般來說,這么做具有更好的可讀性,一看到它大概就能明白它的使用方式。

比如說,類的私有方法一般情況下只能在其類的內(nèi)部使用,通過這樣的命名方式讓人很容易的就避免了在實例中使用這個方法。

class SoftwareDeveloper {
    constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.name = _getName(firstName, lastName);
    }
    _getName(firstName, lastName) {
        return `${firstName} ${lastName}`;
    }
}
var me = new SoftwareDeveloper('Robin', 'Wieruch');

私有方法/函數(shù)/變量也可以出現(xiàn)在javascript文件中,如果這么做,那這意味著該變量不應(yīng)該在文件的外部使用,而僅僅應(yīng)該在這個文件內(nèi)處理一些相關(guān)的邏輯。

javascript命名約定:常量

javascript常量非常重要的一點是,其變量的值是不可變的,因此,為了和其他變量做區(qū)分,其變量名是要全大寫的形式去書寫

var SECONDS = 60;
var MINUTES = 60;
var HOURS = 24;
var DAY = SECONDS * MINUTES * HOURS;

如果常量中的單詞多于一個的話,那么單詞間要用下劃線分隔開。

var DAYS_UNTIL_TOMORROW = 1;

javascript命名約定:全局變量

如果所有的上下文環(huán)境中,都能訪問到這個變量,那么此變量一般就是全局定義的。通常情況下全局變量都定義在javascript文件中,但是如是是比較小的項目的話,此文件可能就是他的整個的項目。一般來說,全局變量的定義沒有什么特殊的規(guī)定:

javascript的全局變量一般都定義在項目/文件的最頂部

如果其全局變量是可變的,則采用駝峰的形式書寫。

如果其全局變量是不可變的,則采用大寫的形式。

javascript命名約定:下劃線

那么JavaScript變量命名中的下劃線和破折號呢?由于在JS中主要考慮駝峰和帕斯卡命名法(PascalCase),因此,下劃線僅很少使用,一般僅用于私有變量或常量。偶爾你也會看到下劃線在其從第三方(例如數(shù)據(jù)庫或API)獲取信息的時候,有時會出現(xiàn)下劃線。另一種可能會出現(xiàn)下劃線的情況是其函數(shù)入?yún)⒉⑽幢皇褂玫降那闆r,如果您尚未看到這些參數(shù),就不用擔(dān)心這些,忽略掉就好。

javascript命名約定:破折號

JavaScript變量中的破折號也不是特別好,這么做只會使一些事情處理起來變得更加困難。比如說在對象中使用它們一樣:

// bad
var person = {
    'first-name': 'Robin',
    'last-name': 'Wieruch',
};
var firstName = person['first-name'];
// good
var person = {
    firstName: 'Robin',
    lastName: 'Wieruch',
};
var firstName = person.firstName;

甚至不可能直接對變量聲明使用破折號

因此最好不要使用破折號。

翻譯自:https://www.robinwieruch.de/javascript-naming-conventions

以上就是javascript命名約定(變量 函數(shù) 類 組件)的詳細(xì)內(nèi)容,更多關(guān)于javascript命名約定的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • uniapp中安裝axios并解決跨域問題小結(jié)

    uniapp中安裝axios并解決跨域問題小結(jié)

    跨域(Cross-Origin)是指在瀏覽器中,當(dāng)前網(wǎng)頁的協(xié)議、域名或端口與請求目標(biāo)的協(xié)議、域名或端口不相同,即存在跨域請求的情況,這篇文章主要介紹了uniapp中安裝axios并解決跨域問題小結(jié),需要的朋友可以參考下
    2024-05-05
  • js實現(xiàn)簡單廣告小窗口

    js實現(xiàn)簡單廣告小窗口

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)簡單廣告小窗口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JS仿Windows實現(xiàn)桌面主題特效

    JS仿Windows實現(xiàn)桌面主題特效

    這篇文章主要介紹了如何利用HTML+CSS+JS模仿Windows實現(xiàn)桌面主題特效,文中的示例代碼講講詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • 不用AJAX和IFRAME,說說真正意義上的ASP+JS無刷新技術(shù)

    不用AJAX和IFRAME,說說真正意義上的ASP+JS無刷新技術(shù)

    注明:以下方法都經(jīng)過實例和開發(fā)的長期驗證,其實這些技術(shù)早就有,今天只不過自己歸納一下
    2008-09-09
  • javascript之DIV拖動類 支持在FF下拖動,調(diào)用簡單

    javascript之DIV拖動類 支持在FF下拖動,調(diào)用簡單

    javascript之DIV拖動類 支持在FF下拖動,調(diào)用簡單...
    2007-08-08
  • JavaScript深拷貝和淺拷貝概念與用法實例分析

    JavaScript深拷貝和淺拷貝概念與用法實例分析

    這篇文章主要介紹了JavaScript深拷貝和淺拷貝概念與用法,結(jié)合實例形式較為詳細(xì)的分析了javascript深拷貝與淺拷貝的概念、原理、用法及相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • js 獲取html5的data屬性實現(xiàn)方法

    js 獲取html5的data屬性實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s 獲取html5的data屬性實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 詳談js中window.location.search的用法和作用

    詳談js中window.location.search的用法和作用

    下面小編就為大家?guī)硪黄斦刯s中window.location.search的用法和作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • JS學(xué)習(xí)筆記之閉包小案例分析

    JS學(xué)習(xí)筆記之閉包小案例分析

    這篇文章主要介紹了JS學(xué)習(xí)筆記之閉包,結(jié)合具體案例形式分析了javascript實現(xiàn)與使用閉包的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • JavaScript架構(gòu)前端監(jiān)控搭建過程步驟

    JavaScript架構(gòu)前端監(jiān)控搭建過程步驟

    這篇文章主要為大家介紹了JavaScript架構(gòu)前端監(jiān)控搭建過程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論