- javascript書寫命名規(guī)范:
常量名:
全部大寫并單詞間用下劃線分隔
如:CSS_BTN_CLOSE、TXT_LOADING
對象的屬性或方法名:
小駝峰式(little camel-case)
如:init、bindEvent、updatePosition
示例:Dialog.prototype = {
init: function () {},
bindEvent: function () {},
updatePosition: function () {}
…
};
類名(構造器):
-->小駝峰式但首字母大寫
-->如:Current、DefaultConfig
函數(shù)名:
-->小駝峰式
-->如:current()、defaultConfig()
變量名:
-->小駝峰式
-->如:current、defaultConfig
私有變量名:
-->小駝峰式但需要用_開頭
-->如:_current、_defaultConfig
- 代碼格式:
"="前后需要跟空格
","后面需要跟空格
JSON對象需格式化對象參數(shù)
if、while、for、do語句的執(zhí)行體用"{}"括起來
- "{}"格式如下:
if (a==1) {
//代碼
};
- 避免額外的逗號:
var arr = [1,2,3,];
for-in循環(huán)體中必須用hasOwnProperty方法檢查成員是否為自身成員,避免來自原型鏈上的污染。
- 長語句可考慮斷行:
TEMPL_SONGLIST.replace('{TABLE}', da['results'])
.replace('{PREV_NUM}', prev)
.replace('{NEXT_NUM}', next)
.replace('{CURRENT_NUM}', current)
.replace('{TOTAL_NUM}', da.page_total);
為了避免和JSLint的檢驗機制沖突,“.”或“+”這類操作符放在行尾。
/*global alert: true, console: true, top: true, setTimeout: true */
- 使用嚴格的條件判斷符。用===代替==,用!==代替!=,避免掉入==造成的陷阱在條件判斷時,這樣的一些值表示
false。
null
undefined與null相等
字符串''
數(shù)字0
NaN
在==時,則會有一些讓人難以理解的陷阱。
undefined與null相等
一個是number一個是string時,會嘗試將string轉(zhuǎn)換為number
嘗試將boolean轉(zhuǎn)換為number
0或1
嘗試將Object轉(zhuǎn)換成number或string
而這些取決于另外一個對比量,即值的類型,所以對于0、空字符串的判斷,建議使用===。
===會先判斷兩邊的值類型,類型不匹配時為false。
- 下面類型的對象不建議用new構造:
new Number
new String
new Boolean
new Object //用{}代替
new Array //用[]代替
引用對象成員用obj.prop代替obj["prop"],除非屬性名是變量。
- 從number到string的轉(zhuǎn)換:
/** 推薦寫法*/
var a = 1;
typeof(a); //"number"
console.log(a); //1
var aa=a+'';
typeof(aa); //"string"
console.log(aa); //'1'
/** 不推薦寫法*/
new String(a)或a.toString()
從string到number的轉(zhuǎn)換,使用parseInt,必須顯式指定第二個參數(shù)的進制。
/** 推薦寫法*/
var a = '1';
var aa = parseInt(a,10);
typeof(a); //"string"
console.log(a); //'1'
typeof(aa); //"number"
console.log(aa); //1
從float到integer的轉(zhuǎn)換。
/** 推薦寫法*/
Math.floor/Math.round/Math.ceil
/** 不推薦寫法*/
parseInt
字符串拼接應使用數(shù)組保存字符串片段,使用時調(diào)用join方法。避免使用+或+=的方式拼接較長的字符串,每個字符串都會使用一個小的內(nèi)存片段,過多的內(nèi)存片段會影響性能。
/**推薦的拼接方式array的push、join*/
var str=[],
list=['測試A','測試B'];
for (var i=0 , len=list.length; i < len; i++) {
str.push( '<div>'+ list[i] + '</div>');
};
console.log(str.join('')); //<div>測試A</div><div>測試B</div>
/** 不推薦的拼接方式+=*/
var str = '',
list=['測試A','測試B'];
for (var i = 0, len = list.length; i< len; i++) {
str+='<div>' + list[i] + '</div>';
};
console.log(str); //<div>測試A</div><div>測試B</div>
- 盡量避免使用存在兼容性及消耗資源的方法或?qū)傩?/li>
不要使用with,void,evil,eval_r,innerText
- 注重HTML分離, 減小reflow, 注重性能。