全部的塊語句都應當使用花括號。包括:數組
if函數
forcode
while對象
do…while…ip
try…catch…finally作用域
//很差的寫法 if (condition) doSomethind(); //很差的寫法 if (condition) doSomething(); //好的寫法 if (condition) { doSomethind(); } //很差的寫法 if (condition) { doSomething(); }
兩種風格:第一種將花括號放置在塊語句中第一行代碼的末尾;第二種將左花括號放置於塊語句首行的下一行。字符串
語句名、圓括號、和左花括號之間沒有空格間隔it
if(condition){io
doSomething();
}console
在左圓括號以前和右圓括號以後各添加一個空格
if (codition) {
doSomething:
}
在左圓括號後和右圓括號前各添加一個空格
if ( condition ) {
doSomething();
}
我的比較喜歡第二種,易讀但不是太麻煩。
縮進
Java風格:
switch (condition) { case "first": //code break; case "second": //code break; default: //code }
每條case語句相對於switch關鍵字都縮進一個層級
從第二條case語句開始,每條case語句先後都各有一個空行。
Dojo風格:
switch (condition) { case "first": //code break; case "second": //code break; default: //code }
default
不少人認爲不論什麼時候都不該當省略default,哪怕default什麼都不作。
我的不太喜歡寫。
我們就儘可能不要寫with語句了。
最好使用hasOwnProperty()方法來爲for-in循環過濾出實例屬性。
var prop; for (prop in object) { if(object.hasOwnProperty(prop)) { console.log("..."); } }
不要把for-in用在數組的遍歷上
//很差的寫法 var vaules = [1, 2, 3], i; for (i in vaules) { process(item[i]); }
建議將局部變量的定義做爲函數內第一條語句。
function doSomethingWithItems(items) { var i, len; var value = 10; var result = value + 10; for (i=0, len=items.length; i < len; i++) { doSomething(items[i]); } }
推薦先聲明JavaScript函數而後使用函數。
function doSomething() { //code } doSomething();
此外,函數聲明不該出如今語句塊以內。
//很差的寫法
if (condition) { function doSomething() { //code } } else { function doSomething() { //code } }
推薦風格:在函數名和左花括號之間沒有空格。
//好的寫法 doSomething(item); //很差的寫法:看起來想一個塊語句 doSomething (item);
匿名函數能夠經過在最後加上一對圓括號來當即執行並返回一個值,而後將這個值賦值給變量。
// 很差的寫法 var value = function() { // 函數體 return { message: "Hi" } }();
爲了讓當即執行的函數可以被一眼看出來,能夠將函數用一對圓括號包裹起來。
// 好的寫法 var value = (function() { // 函數體 return { message: "Hi" } }());
最好不要再全局做用域中使用"use strict"。
// 很差的寫法 - 全局的嚴格模式 "use strict"; function doSomething() { // code } // 好的寫法 function doSomething() { "use strict"; // code }
推薦不要使用 == 和 !=,而應當使用 === 和 !==。
通用原則:嚴禁使用Function,只在別無他法時使用eval()。setTimeout()和setInterval()也是可使用的,但不用字符串形式而要用函數。
ECMAScript 5 嚴格模式對於eval()有着嚴格的限制,禁止在一個封閉的做用域中使用它建立變量或者函數。
JavaScript裏有三種原始包裝類型:String、Boolean和Number。每種類型都表明全局做用域中的一個構造函數,並分別表示各自對用的原始值的對象。
// 很差的作法 var name = new String("Nicholas");