當前位置:
首頁 > 最新 > JavaScript需要注意的這些細節,你全都知道嗎?

JavaScript需要注意的這些細節,你全都知道嗎?

JavaScript知識點分享,大牛請給評論。

未定義的變數和函數:JavaScript的最大的問題是它的全局變數的依賴,特別是隱式的全局變數。如果一個變數沒有被聲明(通常採用var語句),那麼JavaScript假定該變數是全局的。這可能掩蓋名稱拼寫錯誤或其他問題。

JSLint期望所有變數和函數在使用或者調用前都已經被聲明。通過這樣它可以去探測隱式的全局變數,因為它使得程序與更容易閱讀。

成員元素:因為JavaScript是一門弱類型的動態對象語言,所以它無法在編譯時確定屬性名是否拼寫正確。

選項:JSLint在運行時接受一個選項對象,通過它可以限定你能接受的JavaScript的子集。你也可以在腳本的源碼中設置那些選項。

JSLint選項

5.分號:JavaScript使用類似C語言風格語法,它要求使用分號去界定語句。JavaScript試圖通過「自動插入分號」機制使得分號可以省略,這是危險的。像C語言一樣,JavaScript有 ++、--和運算符,它們可以前置也可以後置。這必須通過分號去消除歧義。

6.換行:為進一步防範被自動插入分號機制掩蓋的錯誤,LSint期望代碼很長的語句只在下面所列的這些標點符號字元或運算符之後換行:

, .;:( { [ =

? ! + - * / % ~ ^ | & == != = += -= *= /= %= ^= |= &= > || && === !== = >>> >>>=

JSLint不期望看到很長的語句在標識符、字元串、數字、閉合符或後綴運算符之後換行: } ] ++ -- JSLint允許你開啟「容許隨意換行」選項。自動插入分號機制可能掩蓋「複製/粘貼」導致的錯誤。

6.逗號:逗號運算符可能導致國語複雜的表達式。它也可能掩蓋一些編程錯誤。JSLint期望看到的是逗號被作用一個分隔符,而不是一個運算符(除了在for語句的初始化和增量兩部分外)。它不期望看到數組字面量中省略掉一些元素。多餘的逗號不應該被使用,它不應該出現在數組字面量或者對象字面量最後一個元素之後,因為它可能會被一些瀏覽器錯誤的解析。

7.必須的代碼塊:JSLint期望if和for語句由代碼塊構成,即一句都由一堆花括弧({})圍起來。JavaScript允許一個if語句寫成如下例子:

if(condition)

statements;

大家都知道,在由許多程序員協作開發相同代碼塊的項目中,這種形式很容易導致錯誤。所以JSLint期望代碼塊:

if(condition){

}

經驗表明,這種形式更具有彈性,寫更加規範,不會出現上述所出現的問題。

8.被禁止的代碼塊:在很多語言中,代碼塊具有作用域。在一個代碼塊中引入的變數在該代碼塊之外是不可見的。在JavaScript中,代碼塊並沒有作用域。JavaScript中只有函數作用域。在一個函數中的任意位置引入的變數在該函數中到處可見。JavaScript的代碼塊讓有經驗的程序員感到迷茫,並且導致錯誤,因為她們本來熟悉的語法做了欺騙性的承諾。JSLint期望只有function、if、switch、while、for、do和try語句使用代碼塊。有一個例外就是else或者for in語句中的if語句可以不實用代碼塊。值得一提的就是JavaScript的語法允許代碼塊不與if/for等語句一起使用而可以單獨存在,但因為沒有塊級作用域,這樣的代碼塊沒有任何意義。JSLint遇到單獨的代碼塊時,往往會當作JSON對象去解析。

9.表達式語句:表達式語句被期望是賦值、函數/方法調用或delete運算。所有其他的語句表達式都被認為是錯誤的。

10.for in語句:for in語句可以用來遍歷對象的所有屬性的名字。有一點不好的就是,它也會遍歷所有從原型鏈中繼承而來的成員元素。帶來一些副作用:或許你只對數據成員感興趣,但它卻提供了一些方法函數。每個for in語句的主體都應該被包圍在一個用語過濾的if語句中。if語句可以選擇某種特定的類型活某個範圍內的值,它可以排除函數,或者排除從原型繼承而來的屬性。例如:

for(name in boject){

if(boject.hasOwnProperty(name))boject.hasOwnProperty(name){

....

11.==和!=:==和!=運算符在執行比較前會做強制類型轉換。因為它導致"f
"==0結果為true。使用===與!==運算符始終都是首選。有一個「不允許==和!=」(eqeqeq)的選項,它要求在所有情況下都必須使用===和!==。

JS

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 安卓網 的精彩文章:

蘋果IOS11都做了哪些更新?盤點讓你眼前一亮的新功能
Java中為什麼要使用volatile關鍵詞?
2017年最好看的手機之一
華為P9手機使用一段時間卡頓?簡單幾招,讓你的手機更流暢
MIUI開發版更新推送,十款機型暫無法升級

TAG:安卓網 |

您可能感興趣

關於微軟新推出的Your Phone App,還有這些細節你需要知道
sacai x fragment design正式型錄完美釋出!喜歡有質感細節的朋友可別錯過!
iPhone6S plus總是降頻怎麼辦?別擔心,注意這些小細節就行了
更多細節釋出!本月發售的 Air Jordan 4 「Raptors」 你不能錯過!
這些提升家裝 level 的小細節,你有 get 到嗎?
Yellow Ochre的AJ1細節鑒賞來襲!有沒有值得一看?
用於Switch的Square Enix RPG也獲得了一些新的細節
賈老闆親自上腳的Jordan Zoom Tenacity細節全貌釋出!希望是買得起系列……
仙裙 Georges Hobeika 高定細節,美Cry!一針一線都讓人沉醉
想讓iPhone電池更耐用,請注意這些細節!
iPhone X——你所不了解的細節
Virgil Abloh設計風格再出現!這雙Nike Air VaporMax制勝細節怎麼能錯過?!
vivo xplay7產品設計細節曝光,相信是在你的意料之中!
Supreme x Champion又來了?!一手細節圖搶先曝光!
Virgil Abloh設計風格再出現!這雙Nike Air VaporMax制勝細節怎麼能錯過!
iPhone SE2全細節爆料 沒有FaceID也來騙我錢?
黃曉明有多愛Angelababy,這些細節可以看出
再釋實物圖!Air Jordan 5 「Orange Peel」 釋出更多細節!
Supreme x Champion又來了!一手細節圖搶先曝光!
俄羅斯 Serguei Toutounov 油畫細節如此逼真,服了!