javascript的書寫規(guī)范

  • 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, 注重性能。

以上JavaScript的書寫規(guī)范希望幫助,不足之處還望大家共同探討。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 命名規(guī)范:常量名 全部大寫并單詞間用下劃線分隔 如:CSS_BTN_CLOSE、TXT_LOADING 對象的屬性...
    努力為愛閱讀 826評論 1 5
  • 基本準則 符合web標準,html語義化;html,css,JavaScript分離;代碼簡潔有序,盡可能減少冗余...
    喵嗚君閱讀 873評論 0 1
  • Web前端開發(fā)規(guī)范文檔 規(guī)范目的: 使開發(fā)流程更加規(guī)范化。 通用規(guī)范: TAB鍵用兩個空格代替(WINDOWS下T...
    蕎葉閱讀 565評論 0 1
  • 為什么翻開了《解密》? 說來是前幾年的因由。那時的我,對國內(nèi)連續(xù)劇制作的粗制濫造深惡痛絕,基本不看。也是先生的推薦...
    原來是二姐閱讀 243評論 0 0
  • 一葉而知秋,一念而情深…… 一·相遇 深秋,飄葉的林蔭小道,相遇措不及妨。 我獨自一人,漫無目地的走在那條熟悉的林...
    古城月色閱讀 324評論 0 0

友情鏈接更多精彩內(nèi)容