精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用JSLint精煉提升JavaScript代碼

開發 開發工具 前端
由于移動應用的盛行和HTML5的廣泛運用,JavaScript正越來越流行。JavaScript受歡迎的部分原因是因為它的靈活便捷,你可以快速上手,它不需要重量級的開發環境,也不需要第三方應用支持,只要你打開一個文本編輯器,然后保存,最后通過網頁瀏覽器運行即可。

由于移動應用的盛行和HTML5的廣泛運用,JavaScript正越來越流行。JavaScript受歡迎的部分原因是因為它的靈活便捷,你可以快速上手,它不需要重量級的開發環境,也不需要第三方應用支持,只要你打開一個文本編輯器,然后保存,***通過網頁瀏覽器運行即可。

但是,對于新手而言,使用JavaScript處處存在陷阱。在一段復雜的腳本中,JavaScript語言的延展性常常引起怪異的bug。例如,未聲明的局部變量可能會不知不覺修改全局變量。

現在,打開JSLint網站,正如其網站所言,它是“JavaScript代碼質量工具”。JSLint的作者是Douglas Crockford,因其對JavaScript(ECMAScript)和JSON的貢獻而著名。

(譯注:Douglas Crockford是 web領域技術權威之一,他是JSON、JSLint、JSMin和ADSafe的創造者,也是名著《JavaScript: The Good Parts》(中文版《JavaScript語言精粹》)的作者。撰寫了許多廣為流傳、影響深遠的技術文章,包括“JavaScript:世界上最被誤解的語言”。)

JSLint幫助JavaScript程序員在編程過程中遵循一定的編碼規范。JSLint是以基于嚴格模式(Strict Mode)為前提,參考第5版ECMAScript標準。與一般模式相比,嚴格模式下你的代碼需要按照更嚴格的規則運行。

(譯注:對嚴格模式不了解的童鞋,可以參考這兩篇文章《ECMAScript 5.1簡介》《是時候使用JavaScript嚴謹模式(Strict Mode)提升團隊開發效率》)

使用JSLint

我們來用JSLint運行一個示例。寫一個簡單的jQuery插件,通過prefix顯示msg接收的信息,如果傳給type的值為false則不顯示prefix。

  1. (function ($) {  
  2.     $.fn.loading = function(msg, type, cssClass){  
  3.         var prefixes = {  
  4.             warning: 'Warning: ' + msg,  
  5.             error: 'Error: ' + msg,  
  6.             info: 'Info: ' + msg,  
  7.             warning: 'Caution: ' + msg,  
  8.         };  
  9.         if (type) {  
  10.             concatMsg = prefixes[type];  
  11.         } else {  
  12.             concatMsg = msg;  
  13.         }  
  14.         $(this).each(function()  {  
  15.             var tis = $(this)  
  16.             if (msg == false) {  
  17.                 tis.html('');  
  18.             } else {  
  19.                 tis.html(concatMsg);  
  20.             }  
  21.         });  
  22.      }  
  23. })(jQuery); 

盡管這段代碼作為jQuery的插件運行還算正常,但當你用Firefox或Chrome運行時,會發現有幾處明顯的錯誤,以及一些不易察覺的問題。與其耗費腦力解決這些問題,不如通過JSLint來幫助我們。將上面這段代碼拷貝至JSLint網站的文本框內,然后點擊”JSLint”按鈕,代碼建議和錯誤提示會出現在下方。

JSLint指出的***個錯誤是:丟失“use strict”聲明。這個錯誤表示該函數未在嚴格模式下執行。為糾正該錯誤,我們在函數主體的頭部,添加“use strict”語句以啟動嚴格模式。

  1. 'use strict'

加入嚴格模式聲明語句后,再次點擊“JSLint”按鈕,提示丟失“use strict”的錯誤信息將消失。現在,我們可以繼續看下一個錯誤。接下來的這個錯誤是關于空格的問題,鑒于它不能算個真正的錯誤,我們可以放心地忽略它。

你可以將頁面最下方的“messy white space”選項改為true,這樣你就可以保留function關鍵字后不留空格的寫法。但是現在,我們保留“messy white space”選項的default屬性,因為這個功能也會幫助我們檢查其他空格問題,這個我們之后再說。

同樣需要注意的是,雖然JSLint指出的第二個和第三個錯誤指向同一行代碼,但錯誤點并不一樣。后者JSLint建議在右括號“)”和左大括號“{”之間空一格,現在我們糾正下這個錯誤。

插入空格后,再次點擊“JSLint”按鈕,下一個錯誤出現在第8行,第39個字符處。prefixes對象包含了兩個一模一樣的warning屬性,將第二個warning修改為caution。

這次就不再點擊“JSLint”按鈕,直接看下一個錯誤吧。定義對象的代碼塊的***多了一個逗號。像這類錯誤,Chrome和Firefox這些瀏覽器也許會忽略,但IE就不會那么友好了,所以我們把這個逗號移除掉。

之后的兩個錯誤指向未定義的變量concatMsg。如果一個變量在當前作用域中沒有被定義,JavaScript就會全局查找看是否有在別處定義過。若這時你還引入了外部代碼,并碰巧在全局中定義過該變量,那么一旦出錯,你很有可能要抓破頭皮,費盡心力地尋找bug原因。所幸有了JSLint,我們可以將這類錯誤扼殺在搖籃中。

現在糾正這個錯誤,并重構代碼。因為concatMsg的默認值為msg,所以我們可以將msg先賦給它,待需要時再修改。如下所示,關于concatMsg的代碼為:

  1. var concatMsg = msg;  
  2. if (type) {  
  3.     concatMsg = prefixes[type];  

繼續往下,有一個與之前類似的空格問題,糾正它。緊接著,JSLint指出丟失了一個分號(如下圖所示)。JSLint會假設沒有分號結尾的命令行永遠不會被終止。所以,當下面出現if時,JSLint認為這里應該有個分號。盡管根據語言規范,結束的分號可有可無,但是加上它是一個良好的習慣。因為這類不良代碼在大項目協作中很容易引起莫名的bug。所以平常編碼過程中,應順手避免此類問題。

接下來又是一個很好的錯誤例子。JavaScript中,有‘相等’(==)和嚴格的‘相等’(===)比較。在這段案例代碼中,如果不采用嚴格‘相等’比較,那么不管msg為空字符串還是false值,if內都為true。所以,這里我們采用嚴格‘相等’比較。

好了,讓我們再次點擊“JSLint”按鈕吧。如下圖所示,錯誤出現在第10行,JSLint認為合并變量聲明也是一個良好的編碼規范。盡管concatMsg變量的聲明緊隨prefixes之后,但JSLint認為用逗號隔開,在一個命令語句中完成變量聲明更好。

下一個錯誤則又是關于格式的問題。咋一看,不就是多空了一格嘛,實在是太雞毛蒜皮了。但是,如果在大量的腳本中,這種縮進問題搞不好也會引起難以發現的bug。所以,為了代碼的統一性,我們還是往前移一格吧。

下一個問題又和之前遇到的類似,但形式不一樣。JavaScript的函數也可歸屬為變量,所以和其他變量賦值語句一樣,JSLint希望在末尾加個分號。

***,如下所示,有兩個錯誤出現在***一行。***個問題,JSLint建議將閉括號移至jQuery之后,因為這樣不會使閉包函數定義產生歧義。第二個問題,JSLint認為jQuery變量不存在。但事實上你可能在實際頁面中已引入了jQuery文件,所以我們可以在頁面最下面的文本框內輸入 “jQuery”來解決這個問題(譯者:JSLint Directive上面的文本框)。

再次運行JSLint,它提示該函數需要接收三個參數。但是在本示例中,我們從未使用過第三個參數。因此,此處我們有兩種方法解決這個問題。***種,刪除第三個參數。第二種,將下方的“unused parameters”項改為true。如果你確實是因為某些原因需要保留這個參數,則用第二種方法。

好了,用JSLint改進后的代碼如下所示:

  1. (function ($) {  
  2.     'use strict';  
  3.     $.fn.loading = function (msg, type, cssClass) {  
  4.         var prefixes = {  
  5.             warning: 'Warning: ' + msg,  
  6.             error: 'Error: ' + msg,  
  7.             info: 'Info: ' + msg,  
  8.             caution: 'Caution: ' + msg  
  9.         }, concatMsg = msg;  
  10.         if (type) {  
  11.             concatMsg = prefixes[type];  
  12.         }  
  13.         $(this).each(function () {  
  14.             var tis = $(this);  
  15.             if (msg === false) {  
  16.                 tis.html('');  
  17.             } else {  
  18.                 tis.html(concatMsg);  
  19.             }  
  20.         });  
  21.     };  
  22. }(jQuery)); 

JSLint 指令

你可以通過JSLint指令在你的源代碼中直接定義JSLint變量。這樣,你就不用在頁面上來回操作。如下示例,注釋中定義了jQuery全局變量,并將“unparam”設為true。

  1. /*global jQuery*/ 
  2. /*jslint unparam: true */ 
  3. (function ($) {  
  4.     ‘use strict’;  
  5. …  
  6. }(jQuery)); 

總結 

在這個簡短的例子中,JSLint指出了一些明顯的和一些容易忽視的錯誤。在實際運行代碼之前,通過JSLint幫我們查找一些錯誤可以有效的提高我們的開發效率和代碼質量。如果你真的是認真地想寫出優質的代碼,那么在放到服務器上運行之前先用JSLint檢查一遍吧。JSLint還提供一個獨立的 JS文件版本,所以你也可以把它下載下來在線下運行!

———————————————–我是分割線———————————————

譯者:

嚴格模式并不是所有的瀏覽器都支持,這是一個瀏覽器支持統計表。網頁前端可能暫時(甚至很長時間內)還不能遵循嚴格模式,但是在移動開發中顯然采用嚴格模式更佳。不管目前是否能用上,我覺得前端工程師們都應該利用這些工具幫助自己養成良好的編碼習慣,好的習慣會讓你受益匪淺,在這里略矯情略夸張的引用一下電影《鐵娘子》中的一句話:Watch your habits, for they become your character

英文原文:Using JSLint to Refine Your Code

譯文鏈接:http://blog.jobbole.com/29583/

責任編輯:林師授 來源: 伯樂在線
相關推薦

2017-01-20 09:45:20

JavaScript代碼質量

2025-03-04 13:00:00

JavaScrip代碼語言

2020-03-26 12:38:15

代碼節點數據

2025-02-25 11:12:53

2024-09-04 14:00:16

2009-11-16 11:28:07

Oracle性能測試

2009-11-16 17:55:58

Oracle SQL語

2025-02-19 12:00:00

JavaScript代碼數組方法

2022-03-25 09:22:42

代碼開發

2024-06-14 12:04:33

2025-03-20 07:04:49

2024-03-06 16:45:41

物聯網數字化轉型

2020-11-02 09:10:41

JavaScript

2015-06-30 10:36:00

2010-10-27 13:55:01

memoization遞歸JavaScript

2021-01-28 18:06:49

JavaScriptCookieWeb

2021-03-27 11:02:04

JavaScript隊列編程語言

2024-10-09 12:18:38

2024-06-11 00:09:00

JavaScript模式變量

2025-01-07 10:48:08

點贊
收藏

51CTO技術棧公眾號

亚洲欧美手机在线| 91豆花精品一区| 久久久久亚洲av片无码v| av免费在线观看网站| 成人97人人超碰人人99| 日韩免费av一区二区| 国产精品免费在线视频| jizz性欧美23| 欧洲精品中文字幕| 日韩精品久久一区二区| 日本不卡视频一区二区| 精品亚洲成a人在线观看| 午夜精品一区二区三区在线视频| 日韩一级av毛片| 网站一区二区| 欧美亚洲一区二区在线观看| 白白操在线视频| 国产女人在线观看| 成人一区在线看| 国产精品一区二区性色av| 国产中文字幕免费| 日韩在线观看电影完整版高清免费悬疑悬疑 | 99久久国产免费免费| 欧美精品一二三四区| 91精品久久久久久久久久不卡| 日韩黄在线观看| 九色91porny| 最新日韩一区| 精品欧美aⅴ在线网站| 特色特色大片在线| yjizz视频网站在线播放| 99久久免费视频.com| 91在线免费网站| 亚洲视频中文字幕在线观看| 午夜亚洲精品| 性亚洲最疯狂xxxx高清| 精国产品一区二区三区a片| 清纯唯美日韩| 国产一区二区三区三区在线观看| 日韩精品视频一区二区| 亚洲成人黄色| 欧美一区二区美女| 天堂在线中文在线| 欧美日韩va| 精品视频一区三区九区| 欧美两根一起进3p做受视频| 国产拍在线视频| 亚洲一区二区3| 欧美一级爱爱视频| 影音先锋中文在线视频| 中文字幕一区二区三区色视频| 日韩精品无码一区二区三区| 久草视频视频在线播放| 久久综合色天天久久综合图片| 国产乱码一区| 日本人妻熟妇久久久久久 | 污片免费在线观看| 北条麻妃在线一区二区免费播放| 日韩三级视频中文字幕| 免费网站在线观看黄| 四虎永久精品在线| 欧美高清一级片在线| 亚洲欧美日韩三级| 二区三区精品| 日韩欧美在线123| 日韩精品xxx| 伊人久久影院| 亚洲成色777777女色窝| 青青草视频成人| 九九在线高清精品视频| 亚洲最新在线视频| 免费三级在线观看| 韩国欧美一区| 欧美在线免费视频| 国产精华7777777| 久久99久久精品欧美| 91精品久久香蕉国产线看观看| www.蜜桃av.com| 92精品国产成人观看免费| 欧美二区三区| 秋霞午夜在线观看| 亚洲乱码一区二区三区在线观看| 国产肉体ⅹxxx137大胆| 午夜不卡影院| 欧美日韩在线亚洲一区蜜芽| 一级黄色片在线免费观看| 国产精品香蕉| 日韩成人av网| 国产精品69久久久久孕妇欧美| 夜间精品视频| 午夜精品久久久久久久99热| 啪啪小视频网站| 国产激情精品久久久第一区二区 | 日韩免费高清在线观看| 97人人爽人人爽人人爽| 国产成a人亚洲| 欧美精品一区二区三区在线看午夜 | 日本精品另类| 日韩女同互慰一区二区| 亚欧洲乱码视频| 亚洲最大av| 国产成人精品综合久久久| www日本在线| 久久精品一区二区三区不卡牛牛| 免费在线精品视频| 亚洲精品mv| 91精品国产91热久久久做人人| 三级男人添奶爽爽爽视频| 国产精品久久久乱弄 | 久久亚洲精品爱爱| 欧美tickling挠脚心丨vk| 中文字幕网站在线观看| 国内综合精品午夜久久资源| 国产精品久久97| 香蕉久久一区二区三区| 亚洲精品免费在线观看| 69堂免费视频| 伊色综合久久之综合久久| 影音先锋日韩有码| 国产精品久久久久久99| 国产精品一区免费在线观看| 日韩国产高清一区| 国产在线美女| 日韩视频免费观看高清在线视频| 五月激情四射婷婷| 亚洲欧美网站| 国产在线精品一区二区三区》 | 欧美 日韩 国产 在线| 国产精品久久久久久户外露出| 99久久国产综合精品五月天喷水| 白嫩亚洲一区二区三区| 在线看福利67194| 日本视频免费观看| 91色婷婷久久久久合中文| 欧美激情亚洲天堂| 激情综合五月| 久久亚洲欧美日韩精品专区 | 一区二区视频免费看| 麻豆视频一区二区| 日韩一区国产在线观看| 欧美momandson| 亚洲国语精品自产拍在线观看| 黄色一级视频免费观看| 国产乱妇无码大片在线观看| 中文字幕在线亚洲精品| 欧美亚洲人成在线| 亚洲人成电影在线观看天堂色 | 欧美猛男gaygay网站| 国产一二三四五区| 久久久人人人| 欧美日韩国产免费一区二区三区| 成人欧美大片| 亚洲天堂av在线免费| 亚洲欧美另类在线视频| 久久久久久久久久久99999| 92看片淫黄大片一级| 久久99性xxx老妇胖精品| 人人爽久久涩噜噜噜网站| 日韩av免费观影| 色婷婷av一区| 久久午夜精品视频| 九九国产精品视频| 亚洲小视频在线播放| a看欧美黄色女同性恋| 久久青草精品视频免费观看| 午夜视频在线播放| 色老汉av一区二区三区| 亚洲av无一区二区三区| 国内成人免费视频| 蜜臀av色欲a片无码精品一区| 欧美午夜18电影| 国产99在线|中文| av网页在线| 91精品国产综合久久福利软件| 欧美精品一区二区蜜桃| 92国产精品观看| 蜜臀av免费观看| 欧美激情五月| 蜜桃网站成人| 久久精品嫩草影院| 欧美高清电影在线看| 日本在线一二三| 欧美日韩精品专区| 日本少妇裸体做爰| 国产欧美精品区一区二区三区 | 99国产精品欲| 午夜国产精品影院在线观看| 欧美人妻一区二区三区| 韩国v欧美v亚洲v日本v| 免费一级特黄特色毛片久久看| 国产一区二区三区站长工具| 成人在线视频网站| 草草在线观看| 色偷偷av一区二区三区| 色哟哟国产精品色哟哟| 欧美午夜电影网| 国产网友自拍视频| 国产精品成人一区二区三区夜夜夜| aaa黄色大片| 人妖欧美一区二区| 久草视频这里只有精品| 欧美在线电影| 精品国产一区二区三区麻豆免费观看完整版| 精品裸体bbb| 66m—66摸成人免费视频| 欧美日韩视频在线播放| 亚洲国产天堂久久国产91| 国产精品久久久久久久久久久久久久久久| 性做久久久久久久免费看| 日韩欧美在线视频播放| 91片黄在线观看| 亚洲午夜精品在线观看| 麻豆极品一区二区三区| 成人午夜视频免费在线观看| 国产精品草草| 在线电影看在线一区二区三区| 天堂99x99es久久精品免费| 91九色偷拍| 色综合一区二区日本韩国亚洲| 青青青国产精品一区二区| 日本乱理伦在线| 久久久精品在线| 成人h小游戏| 亚洲美女动态图120秒| 色网站免费观看| 欧美成人艳星乳罩| 国产又粗又长又黄| 欧美三级日本三级少妇99| 久久国产精品波多野结衣av| 亚洲欧洲另类国产综合| av手机在线播放| 久久久精品黄色| 日本一区二区三区网站| 国产成人午夜高潮毛片| 在线免费看v片| 久久se这里有精品| 少妇激情一区二区三区| 久久精品盗摄| 免费激情视频在线观看| 久久久蜜桃一区二区人| 黄色一级一级片| 久久久久久黄| 国产精品少妇在线视频| 日韩经典中文字幕一区| 亚洲成熟丰满熟妇高潮xxxxx| 99精品热视频只有精品10| 成人在线国产视频| 日韩视频一区| 欧美牲交a欧美牲交| 亚洲精品看片| 日韩五码在线观看| 国产视频一区免费看| 一女被多男玩喷潮视频| 亚洲伊人网站| chinese少妇国语对白| 日本免费新一区视频| 日日干夜夜操s8| 久久99国内精品| 91精品国产三级| 国产suv一区二区三区88区| 好吊操视频这里只有精品| 国产mv日韩mv欧美| 欧产日产国产精品98| 久久亚洲精精品中文字幕早川悠里| 性少妇bbw张开| 亚洲国产高清不卡| 欧美成人777| 无吗不卡中文字幕| 婷婷激情五月综合| 欧美电影影音先锋| 午夜精品久久久久久久91蜜桃| 精品福利一区二区三区| 视频一区二区三区在线看免费看| 夜夜躁日日躁狠狠久久88av | 亚洲视频一区在线观看| 欧美日韩一级大片| 欧美日韩性视频| 中文字幕 国产| 日韩一区国产二区欧美三区| 日韩性xxxx| 综合国产在线观看| 污污影院在线观看| 欧美在线精品免播放器视频| 久久伊人国产| 国产另类自拍| 久久久影院免费| 免费的av在线| 亚洲男女自偷自拍| 亚洲第一色av| 2023国产精品视频| 97在线观看免费高| 欧美日韩精品国产| 国产农村老头老太视频| 亚洲精品国偷自产在线99热| 欧美被日视频| 2019中文字幕全在线观看| 永久免费观看精品视频| 久久精品国产精品青草色艺| 亚洲成人免费| 久久综合久久色| 成人午夜大片免费观看| 永久免费观看片现看| 精品久久香蕉国产线看观看gif| 在线观看视频中文字幕| 亚洲黄色www| 免费大片黄在线| 欧美怡红院视频一区二区三区| 免费看一区二区三区| 色99中文字幕| 国产一级一区二区| 性生活在线视频| 亚洲国产精品传媒在线观看| 亚洲黄色三级视频| 日韩视频一区在线观看| 色三级在线观看| 清纯唯美日韩制服另类| 国产欧美三级电影| 一级黄色片播放| 日本va欧美va瓶| 亚洲综合自拍网| 一区二区成人在线观看| 91尤物国产福利在线观看| 亚洲人成绝费网站色www| xxxx成人| 91夜夜揉人人捏人人添红杏| 国产欧美日韩在线一区二区| 黄网站欧美内射| 成人禁用看黄a在线| 青青操国产视频| 欧美一区二区视频在线观看2022| 成人性爱视频在线观看| 日本精品一区二区三区在线| 老司机精品在线| 一卡二卡三卡视频| 豆国产96在线|亚洲| 黄色一级视频在线观看| 欧美一区二区成人| 9191在线| 国产欧美日韩中文| 成人激情电影在线| 又色又爽又高潮免费视频国产| 91色视频在线| 香蕉影院在线观看| 精品亚洲夜色av98在线观看| 福利小视频在线| 国精产品一区二区| 国产偷自视频区视频一区二区| 日韩无码精品一区二区| 亚洲二区在线观看| 女人18毛片一区二区三区| 97视频免费观看| 免费看久久久| 日本成年人网址| 久久精品人人做人人爽97| 国产精品久久久久久久久夜色| 这里只有精品在线观看| 久久久加勒比| 浴室偷拍美女洗澡456在线| 国产黄色精品视频| 成人午夜视频精品一区| 亚洲午夜精品视频| 久久亚洲国产精品尤物| 熟妇熟女乱妇乱女网站| 国产精品系列在线观看| 国产一级淫片a| 亚洲欧美另类自拍| 国产福利亚洲| 台湾无码一区二区| 91在线观看高清| 中文字幕人妻精品一区| 美女久久久久久久久久久| 成人av动漫| 久久精品香蕉视频| 国产精品久久久久精k8| 亚洲爱情岛论坛永久| 欧美性视频精品| 久久精品国产大片免费观看| 成人做爰69片免费| 色94色欧美sute亚洲线路一久| 日本综合在线| 国产精品麻豆免费版| 久久亚洲国产精品一区二区| 激情高潮到大叫狂喷水| 精品国产一区二区三区久久久蜜月 | 国产精品爱久久久久久久| 亚洲精品极品少妇16p| aaaa黄色片| 欧美福利电影网| 成全电影大全在线观看| 色综合电影网| 成人亚洲一区二区一| 国产日韩在线免费观看| 九色精品免费永久在线| 国产成人久久| 久久久久亚洲av无码网站| 欧美三级韩国三级日本三斤| 黄网站在线观| 亚洲国产日韩欧美| va亚洲va日韩不卡在线观看| 在线免费观看高清视频|