Javascript 編碼約定(編碼規(guī)范)
1、使用 strict 模式
在一個作用域(包括函數(shù)作用域、全局作用域)中,可以使用
"use strict";
來開啟 strict 模式。
2、縮進
用 Tab 鍵進行代碼縮進,以節(jié)約代碼大小,使用4個空格的寬度來進行縮進(JSLint 建議)。
3、符號
1) 大括號
與語句放同一行,放于最后面;僅有一行語句,也使用大括號:
if (true) {
//true
} else {
//false
}
while (true) {
//alert(1);
}
2) 空格
在逗號、分號、冒號后加空格
在操作符前后加空格
在大括號開始符之前
在大括號結(jié)束符和 else、while 或 catch 之間
在 for 的各個部分
如:
var a = [1, 2, 3];
var obj = {
name: 'name',
value: 'value'
};
for (var i = 0; i < 10; i++) {}
function func(a, b, c) {}
c = a + b;
if (a && b || c) {
//if
} else {
//else
}
try {
//try
} catch(err) {
//catch
}
3) 所有語句結(jié)束后,使用 ; 號結(jié)束
4、命名
對象:使用駝峰式,如:MyClass
方法、變量:使用混合式,如:getName(), myName
常量:大寫加下劃線,如:MY_NAME
5、單一 var 模式
只使用一個 var 在函數(shù)頂部進行變量聲明,作用如下:
1) 提供一個單一的地址已查找到函數(shù)需要的所有局部變量
2) 防止出現(xiàn)變量在定義前就被使用的邏輯錯誤
3) 幫助牢記要聲明變量,盡可能少地使用全局變量
4) 更少的編碼
function func() {
var a = 1,
b = 2,
sum = a + b,
obj = {
name: 'name',
value: 'value'
},
$btn = $('#btn');
//函數(shù)體
}
6、循環(huán)
1) for 循環(huán)
var i, arr = [];
for (i = arr.length; i--;) {
//arr[i];
}
注:
for (var i = 0; i < document.getElementsByName().length; i++) {
//document.getElementsByName()[0];
}
這種方式每次對 i 進行長度比較的使用對會進行 document 的查詢,而通常 DOM 操作是非常耗時的。
2) while 循環(huán)
var arr = [],
i = arr.length;
while (i--) {
//處理
}
3) for-in 循環(huán)
var i,
hasOwn = Object.prototype.hasOwnProperty;
for (i in man) {
if (hasOwn.call(man, i)) { //過濾
console.log(i, ':', man[i]);
}
}
7、switch 選擇
switch (num) {
case 0:
//do something
break;
case 1:
//do something
break;
...
default:
//do default
}
建議使用:
var obj = {
'0': function() {
//do somethins
},
'1': function() {
// do somethis
}, ...
}
if (obj.hasOwnProperty(num)) {
obj[num]();
} else {
//do default
}
8、使用 parseInt() 的數(shù)值約定
1) 每次都具體指定進制參數(shù):
var month = '09', day = '08'; month = parseInt(month, 10); //不加進制參數(shù)便會轉(zhuǎn)換為八進制 day = parseInt(day, 10);
2) 其他常用的將字符串轉(zhuǎn)換為數(shù)值的方法:
+'08';
Number('08');
9、字面量模式
不建議使用構(gòu)造函數(shù)來定義:
// built in constructors (avoid)
var o = new Object();
var a = new Array();
var re = new RegExp('[a-z]', 'g');
var s = new String();
var n = new Number();
var b = new Boolean();
throw new Error('message');
建議使用更優(yōu)的字面量模式:
// literals and primitives (prefer)
var o = {};
var a = [];
var re = /[a-z]/g;
var s = '';
var n = 0;
var b = false;
throw {
name: 'Error',
message: 'message'
}
10、其他
1) 變量內(nèi)的簡寫單詞如果在開頭則全小寫:xmlDocument,如果不在開頭則全大寫:loadXML
2) 變量必須是有意義的英文,禁止拼音
相關(guān)文章
window.onload和$(function(){})的區(qū)別介紹
window.onload和$(function(){})有什么區(qū)別。window.onload表示頁面加載完了后(包括dom和js),再執(zhí)行函數(shù)里面的內(nèi)容,感興趣的朋友可以了解下2013-10-10
JavaScript中關(guān)于indexOf的使用方法與問題小結(jié)
indexOf方法的作用是:根據(jù)給定參數(shù)x返回目標字符串(可以看成字符的數(shù)組)或數(shù)組中與x相等的項的索引。2010-08-08
javascript 打開頁面window.location和window.open的區(qū)別
有時候需要用js來實現(xiàn)頁面的打開,因為js下有window.location和window.open的不同實現(xiàn)方法,下面來簡單的說明下區(qū)別。2010-03-03
JavaScript中將數(shù)組進行合并的基本方法講解
這篇文章主要介紹了JavaScript中將數(shù)組進行合并的基本方法講解,包括快速合并多個數(shù)組的方法,需要的朋友可以參考下2016-03-03

