日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript的编码规范

發布時間:2025/5/22 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript的编码规范 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JavaScript 文件引用

JavaScript 程序應該盡量放在 .js 的文件中,需要調用的時候在 HTML 中以 < script src="filename.js"> 的形式包含進來。JavaScript 代碼若不是該 HTML 文件所專用的,則應盡量避免在 HTML 文件中直接編寫 JavaScript 代碼。因為這樣會大大增加 HTML 文件的大小,無益于代碼的壓縮和緩存的使用。

另外,<script src="filename.js"> 標簽應盡量放在文件的后面。這樣會降低因加載 JavaScript 代碼而影響頁面中其它組件的加載時間。

代碼排版

行長度

每行代碼應小于 80 個字符。如果代碼較長,應盡量選擇換行,下一行代碼應縮進 8 個空格。這樣可以使代碼排版整齊,減輕閱讀代碼的疲勞感。換行縮進 8 個空格可以和代碼段的縮進 4 個空格區分開,以增強代碼的可閱讀性。

行結束

JavaScript 語句應該以分號結束。但大多數瀏覽器允許不寫分號,只要在本應是分號的地方有一個換行符就行。但是如果代碼行較長需要換行的時候,有哪些注意事項呢?換行應選擇在操作符和標點符號之后,最好是在逗號','之后,而不要在變量名、字符串、數字、或')' ']' '++' '--'等符號之后換行。

這樣可以有效的防止拷貝、粘貼而引起的錯誤,并可有效地增強代碼的可閱讀性。請見清單 1,代碼的輸出符合我們的期望。但就寫法而言,對 valueB 的賦值語句是在變量 valueA 之后進行的換行,這很容易被誤解為 valueB=ValueA,給閱讀造成障礙。而對 valueC 的復制語句是在'+'之后進行的換行,就容易理解的多。這也是本文所提倡的換行方式。

清單 1. 行結束的位置

代碼:

  • <script?language="javascript">? ?
  • ?var?valueA?=?1;? ?
  • ?var?valueB?=?valueA?????????///bad? ?
  • ???????+1;? ?
  • ?var?valueC?=?valueB?+??????///good? ?
  • ???????valueA;? ?
  • ?alert?(valueB);??????????????//output:?valueB=2? ?
  • ?alert?(valueC);//output:?valueC=3? ?
  • ?</script>?
  • 縮進

    關于縮進的問題,不只是 JavaScript,幾乎所有的語言編寫的時候,都會提及縮進的問題。縮進幾乎是代碼編寫規范的第一課,是代碼可閱讀性判斷的直接因素。

    代碼縮進的好處是不言而喻的,但是對于如何縮進,則沒有標準而言。最受歡迎的是方便使用 TAB 鍵縮進,也有些喜歡用 2 個、4 個、8 個空格進行縮進。這樣縮進風格不一,也同樣給代碼的閱讀帶來障礙。

    本文提倡用 4 個空格來進行縮進,并在同一產品中采用同一種縮進標準。不支持用 TAB 鍵進行縮進。這是因為直到現在還沒有統一的標準來定義 TAB 鍵所代替的空白大小,有些編輯器解析為 4 個空格大小,有些則解析為 8 個。因而用不同的編輯器查看代碼,可能造成格式混亂。當然 TAB 簡單易用,為解決這個問題,建議在設置開發環境時,將編輯器里的 TAB 快捷鍵重新設置為 4 個空格。據了解 Eclipse, Vi, Nodepad++,Editplus, UltraEdit 等流行的編輯器,均提供了此功能。

    注釋

    代碼中的注釋很重要,自然也是毋庸置疑的。通常我們會強調代碼中注釋數量的多少,而輕視了對注釋質量的提高。編碼是及時添加注釋,會給后續代碼的維護人員帶來很大的便利。但是如果注釋不注意更新,或者由于拷貝、粘貼引起的錯誤的注釋,則會誤導閱讀人員,反而給閱讀帶來障礙。

    除了注釋要 及時更新外,我們還應對注釋的內容要特別關注。注釋要盡量簡單、清晰明了,避免使用含混晦澀的語言,同時著重 注釋的意義,對不太直觀的部分進行注解。請見清單 2。

    清單 2. 有意義的注釋

    代碼:

  • <script?language="javascript">? ?
  • ?//following?section?is?used?to?initialize?golbal?variables?????????????(good)? ?
  • ?var?valueA?=?0;?????//initialize??valueA?to?be?sero???????????????????????(bad)? ?
  • ?var?valueB?=?1;? ?
  • ?...? ?
  • ?//call?f1?function?after?waiting?for?50?seconds.?????????????????????????(good)? ?
  • ?setTimeout?(f1,50000);?//set?timeout?to?be?20s?????????????????????(copy?error)? ?
  • ?...? ?
  • ?</script>?
  • 這樣的注釋方式在 JavaScript 代碼中經常見到。"initialize valueA to be sero" 這樣的注釋有什么用呢?難道閱讀程序的工程師從"var valueA = 0;"復制語句中看不出來么?"set timeout to be 20s"這條注釋,不只是因拷貝、粘貼引起的時間大小的錯誤,同時也誤導了程序員對這條語句的理解。setTimeout () 函數的作用并非是設置函數執行的超時時間,而是等待一定時間后執行所調用的函數,害人匪淺呀。這樣的注釋內容寧可刪掉。

    此外,JavaScript 的注釋有兩種"//" 和"/* .... */",建議"//"用作代碼行注釋,"/* .... */"形式用作對整個代碼段的注銷,或較正式的聲明中,如函數參數、功能、文件功能等的描述中。

    標識符命名

    JavaScript 中的標識符的命名規則:

    ◆ 以字母、下劃線'_'或美元符號'$'開頭

    ◆ 允許名稱中包含字母,數字,下劃線'_'和美元符號'$'

    ◆ 區分大小寫

    變量、參數、成員變量、函數等名稱均以小寫字母開頭,構造器的名稱以大寫字母開頭。下劃線'_'開頭的變量一般習慣于標識私有 / 局部成員。而美元符號'$'開頭的變量習慣于標識系統相關,比如系統進程等。應避免用下劃線'_'或美元符號'$'來命名標識符。盡可能地降低代碼的閱讀負擔。

    聲明

    變量的聲明

    盡管 JavaScript 語言并不要求在變量使用前先對變量進行聲明。但我們還是應該養成這個好習慣。這樣可以比較容易的檢測出那些未經聲明的變量,避免其變為隱藏的全局變量,造成隱患。

    在函數的開始應先用 var 關鍵字聲明函數中要使用的局部變量,注釋變量的功能及代表的含義,且應以字母順序排序。每個變量單獨占一行,以便添加注釋。這是因為 JavaScript 中只有函數的 {} 表明作用域,用 var 關鍵字聲明的局部變量只在函數內有效,而未經 var 聲明的變量則被視為全局變量。我們來看下清單 3。

    清單 3. 局部變量聲明

    代碼:

  • <script?language="javascript">? ?
  • ?var?valueA??=?"a";? ?
  • ?var?valueB??=?"b";? ?
  • ?function?f1?()?{? ?
  • ???var?valueA?=?"c";? ?
  • ???alert?("valueA="+valueA);????????//output:?valueA=c? ?
  • ???valueB?=?"d";? ?
  • ???alert?("valueB="+valueB);????????//output:?valueB=d? ?
  • ?}? ?
  • ?f1?();? ?
  • ?alert?("valueA="+valueA);????????????//output:?valueA=a? ?
  • ?alert?("valueB="+valueB);????????????//output:?valueB=d? ?
  • ?</script>?
  • 從上例的輸出驚奇地發現,用 var 聲明過的變量 valueA 和沒有聲明的變量 valueB 是有區別的。特別需要注意的是,在函數內部用 var 聲明的變量為局部變量,這樣可以有效地避免因局部變量和全局變量同名而產生的錯誤。

    函數的聲明

    函數也應在調用前進行聲明,內部函數應在 var 聲明內部變量的語句之后聲明,可以清晰地表明內部變量和內部函數的作用域。

    此外,函數名緊接左括號'('之間,而右括號')'和后面的'{'之間要有個空格,以清楚地顯示函數名以其參數部分,和函數體的開始。若函數為匿名 / 無名函數,則 function 關鍵字和左括號'('之間要留空格,否則可能誤認為該函數的函數名為 function。

    清單 4. 內部函數聲明

    代碼:

  • <script?language="javascript">? ?
  • ?var?innerA?=?1;? ?
  • ?function?outF?()?{? ?
  • ???var?innerA?=?2;? ?
  • ???function?_inF?()?{? ?
  • ???????alert?("valueA="+innerA);? ?
  • ???}? ?
  • ???_inF?();? ?
  • ?}? ?
  • ?outF?();?????????????????????????//output:?valueA=2? ?
  • ?_inF?();?????????????????????????//error:?innerF?is?not?defined? ?
  • ?</script>?
  • 從清單 4 的輸出可以看出,inF () 函數僅在 outF () 函數的內部生效,局部變量 innerA 對內部函數的作用域生效。這樣的編碼方式使得變量和函數的作用域變得清晰。

    語句

    對于簡單語句而言,需要提及的仍然是分號必要性,同時,一行最多有一個語句。如果一個賦值語句是用函數和對象來賦值,可能需要跨多行,一定切記要在賦值語句末加上分號。

    這是因為 JavaScript 中,所有表達式都可以當語句,遇換行符時會解析為表達式的結束,此時不規范的換行和分號的丟失,可能引入新的錯誤。

    對于復合語句,if, for, while, do, switch, try … catch 等代碼體,函數定義的函數體,對象的定義等都需要放在花括號'{}'里面。

    ◆ '{' 應在行末,標志代碼塊的開始。

    ◆ '}' 應在一行開頭,標志代碼塊的結束,同時需要和'{'所在行的開始對齊,以表明一個完整的復合語句段。這樣可以極大地提高代碼的可閱讀性,控制邏輯能清晰地表現出來。

    ◆ 被包含的代碼段應該再縮進 4 個空格。

    ◆ 即使被包含的代碼段只有一句,也應該用花括號'{}'包含。盡管不用花括號代碼也不會錯,但如若需要增加語句的話,則較容易因花括號遺漏而引起的編譯錯誤或邏輯錯誤。

    return語句在使用時也需慎重,如果用表達式的執行作為返回值,請把表達式和 return 放在同一行中,以免換行符被誤解析為語句的結束而引起返回錯誤。return 關鍵字后若沒有返回表達式,則返回 undefined。構造器的默認返回值為 this。

    清單 5. return 表達式

    代碼:

  • <script?language="javascript">? ?
  • ?function?F1?()?{? ?
  • ???var?valueA??=?1;? ?
  • ???var?valueB??=?2;? ?
  • ???return?valueA?+?valueB;? ?
  • ?}? ?
  • ?function?F2?()?{? ?
  • ???var?valueA??=?1;? ?
  • ???var?valueB??=?2;? ?
  • ???return? ?
  • ???????valueA?+?valueB;? ?
  • ?}? ?
  • ?alert?(?F1?()?);??//output:?3? ?
  • ?alert?(?F2?()?);??//ouput:?undefined? ?
  • ?</script>?
  • 在清單 5 中顯示了因返回表達式沒有和 return 關鍵字放在同一行而引起的返回錯誤,需重視。

    特殊符號

    空白符

    適當的空白行可以大大提高代碼的可閱讀性,可以使代碼邏輯更清晰易懂。同時,在表達式中適當的留空白,也會給代碼的閱讀帶來方便。

    關鍵字的后面如有括號,則最好在關鍵字和左括號'('之間留空白,如 for, if, while 等。而函數名和括號之間則不宜留空白,但若是匿名函數,則必須在 function 和左括號'('之間留空白,否則,編輯器會誤認為函數名為 function。

    在表達式中,二元運算符 ( 除左括號'(',左方括號'[',作用域點'.') 和兩個操作數之間最好留空白。一元運算符(若不是詞 typeof 等)和其操作數之間不宜留空白。

    逗號','的后面需要留空白,以顯示明確的參數間隔,變量間隔等。

    分號';'之后通常表明表達語句的結束,而應空行。在 for 的條件語句中,分號之后則應該留空白。

    { } 和 [ ]

    在 JavaScript 中,如需定義空對象和空數組,通常很自然地想到用 new Object () 和 new Array () 的方法。其實花括號'{}'和方括號'[]'可以直接用來定義一個空對象和一個空數組。這種書寫方法可以使代碼看起來簡單易懂。

    == 和 ===

    判斷"邏輯等"在代碼里太平常的不過事情了,但 JavaScript 與其他熟知的編程語言不同的是,除了可以使用兩個等號'=='來作判斷以為,還可以使用三個等號'==='來進行邏輯等判斷。兩者的不同是'=='作邏輯等判斷時,會先進行類型轉換后再進行比較。'==='則不會。因而,'=='進行的判斷結果可能產生偏差。'!='與'!=='的區別亦是如此。本文提倡盡量使用'==='來進行邏輯等的判斷,用'!=='進行邏輯不等的判斷。

    清單 6. === 的使用

    代碼:

  • <script?language="javascript">? ?
  • ?var?valueA?=?"1";? ?
  • ?var?valueB?=?1;? ?
  • ?if?(?valueA?==?valueB)?{? ?
  • ???alert?("Equal");? ?
  • ?}? ?
  • ?else?{? ?
  • ???alert?("Not?equal")? ?
  • ?}? ?
  • ?//output:?"Equal" ?
  • ?if?(?valueA?===?valueB)?{? ?
  • ???alert?("Equal");? ?
  • ?}? ?
  • ?else?{? ?
  • ???alert?("Not?equal")? ?
  • ?}? ?
  • ?//output:?"Not?equal" ?
  • ?</script>?
  • 清單 6 中,valueA 和 valueB 兩個變量的值顯然是不相等的,起碼 valueA 是個字符串,而 valueB 是一個數字。但用'=='進行判斷是,程序卻輸出相等的字樣。這是因為編譯器對兩個變量進行比較時,因為他們的類型不同,而自動地將 valueB 轉換成字符串,而后再和 valueA 進行比較的。用'==='得到的判斷結果正和預期的結果相符。

    +

    加號'+'也同樣是程序員所熟知的操作符之一。JavaScript 和其他編程語言不同的是,在 JavaScript 中,'+'除了表示數字值相加,字符串相連接以外,還可以作一元運算符用,把字符串轉換為數字。因而如果使用不當,則可能與自增符'++'混淆而引起計算錯誤。這一點,在清單 7 中可以清楚地看出。

    清單 7. 巧用 + 號

    代碼:

  • <script?language="javascript">? ?
  • ?var?valueA?=?20;? ?
  • ?var?valueB?=?"10";? ?
  • ?alert?(?valueA?+?valueB);?????//ouput:?2010? ?
  • ?alert?(?valueA?+?(+valueB));?//output:?30? ?
  • ?alert?(?valueA?+?+valueB);????//output:30? ?
  • ?alert?(?valueA?++valueB);?????//Compile?error? ?
  • ?</script>?
  • ?

    轉載于:https://www.cnblogs.com/zzhui/p/5073760.html

    總結

    以上是生活随笔為你收集整理的JavaScript的编码规范的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美福利一区二区三区 | 嫩草网站 | 特级毛片www | 天天草av | 亚洲AV无码片久久精品 | 中文字幕人妻一区二区在线视频 | 日韩大片在线 | 亚洲国产视频一区二区 | 日韩黄网| 玩弄少妇人妻 | 中文字幕永久免费 | 成人五区| 寻找身体恐怖电影免费播放 | 黑人激情视频 | av播播 | 91天天综合| 国产精品久久999 | 2024国产精品| 国产吃瓜黑料一区二区 | 国产美女被遭强高潮免费网站 | 秋霞一区 | 天天综合网久久综合网 | 中文字幕一级片 | 九色综合网 | 久久精品视频免费播放 | 91网址在线播放 | 黄色一级片国产 | 日韩视频网站在线观看 | 日本黄色xxxxx | 久久久国产精品成人免费 | 青青艹在线观看 | 久久久久久麻豆 | 中文字幕婷婷 | 日韩欧美国产一区二区三区在线观看 | 性生活视频软件 | 欧美91| 亚洲色成人www永久在线观看 | 性欧美一区二区 | 黄色裸体视频 | 欲乱美女| 91成人国产 | 五月婷婷丁香六月 | 丁香婷婷综合激情 | 欧美福利视频 | av在线资源观看 | 欧美日韩人妻精品一区二区三区 | 91成人一区二区三区 | 国产情侣在线播放 | 天堂网2018 | 午夜免费成人 | 亚州av影院 | 免费看黄色大片 | 波多野结衣在线观看一区 | 激情综合网五月天 | 先锋影音av在线资源 | 一二三四区视频 | 暖暖日本在线 | 精品国产丝袜一区二区三区乱码 | 四虎成人精品永久免费av | 第九色激情 | 婷婷.com| 在线免费观看日韩视频 | 在线观看中文字幕码 | 欧美成人一区二区三区 | 自拍av在线 | 男人的天堂在线 | 欧日韩在线观看 | 午夜精品影院 | 亚洲一区在线电影 | 蜜桃av乱码一区二区三区 | 色婷婷免费视频 | 亚洲a中文字幕 | 中文在线免费视频 | 欧美日韩成人在线播放 | wwwjizzzcom| 婷婷亚洲综合五月天小说 | 人人爽爽人人 | 久久91久久| 911亚洲精品 | 777中文字幕| 污视频网站免费看 | 黄色片在线观看视频 | 1024av在线| 国产欧美日韩综合精品一区二区 | 亚洲女人初尝黑人巨大 | 亚洲一区精品视频在线观看 | 日本人dh亚洲人ⅹxx | 国产精品天天看 | 色呦呦在线看 | av最新版天堂资源在线 | 黄瓜视频在线免费看 | 最新最近中文字幕 | 成人动态视频 | 黄色小视频网 | 久久久久麻豆 | 影音先锋人妻啪啪av资源网站 | av大片在线观看 | 天堂8av| 无码人妻一区二区三区线 |