- 編寫可維護的代碼
- 盡量減少全局變量
沒有聲明或沒有對鏈式賦值的所有變量進行聲明時也生成全局變量
隱含全局變量可以通過delete刪除隅忿,明確定義的全局變量則不可以蔼夜。隱含全局變量是全局對象的屬性归苍。
- 不要增加內(nèi)置對象的原型。
- 優(yōu)化 for 循環(huán)
//一般情況
for( var i = 0;i < arr.length ; i++ ) {
//處理 arr[i]
}
//但是每次訪問任何容器的長度時,都是在查詢活動的 DOM 恨诱,應(yīng)該減少這種 DOM 操作
//優(yōu)化之后
var length = arr.length ;
for( var i = 0;i < length ; i++ ) {
//處理 arr[i]
}
//最優(yōu)
var i,arr = [];
for ( i = arr.length ; i-- ) { //使用最少的變量胜茧;逐步減至0粘优,因為與0比較比與數(shù)組長度比較更有效率
//處理 arr[i]
}
//或使用 while 循環(huán)
var arr = [];
i = arr.length;
while ( i-- ) {
//處理 arr[i]
}
- for-in
for ( var i in man ) {
if ( man.hasOwnProperty(i)) {
console.log(i);
}
}
- 不要使用setInterval( ),setTimeout( )等構(gòu)造函數(shù)來傳遞參數(shù)。
- 不要使用 eval( ), 可以使用 new Function ( ) 來替代或?qū)?eval( ) 封裝在一個即時函數(shù)中
//eval( )會影響到作用域鏈呻顽,可以訪問和修改它外部作用域的變量 - 字符串轉(zhuǎn)化為數(shù)字的方法:
parseInt("08",10) //注意一定要給第二個參數(shù)賦值
+"08" // 8
Number("08"); //8
- 命名約定
構(gòu)造函數(shù)的首字母大寫
變量名和函數(shù)名采用駝峰命名法
大寫的變量名約定該變量在程序生命周期中不可改變
JSLint 會對下劃線前綴給出警告