免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1636 | 回复: 0
打印 上一主题 下一主题

javascript代码规范 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-18 17:23 |只看该作者 |倒序浏览
javascript代码规范






1. Javascript代码应符合Douban-JSLint检验标准

1-1. 语句必须都有分号结尾,除了for, function, if, switch, try, while

1-2. 只有长语句可以考虑断行,如:
  1. TEMPL_SONGLIST.replace('{TABLE}', da['results'])
  2.                                                .replace('{PREV_NUM}', prev)
  3.                                                .replace('{NEXT_NUM}', next)
  4.                                                .replace('{CURRENT_NUM}', current)
  5.                                                .replace('{TOTAL_NUM}', da.page_total);
复制代码
为了避免和JSLint的检验机制冲突,“.”或“+”这类操作符放在行尾,上面代码应改为:
  1. TEMPL_SONGLIST.replace('{TABLE}', da['results']).
  2.                                                replace('{PREV_NUM}', prev).
  3.                                                replace('{NEXT_NUM}', next).
  4.                                                replace('{CURRENT_NUM}', current).
  5.                                                replace('{TOTAL_NUM}', da.page_total);
复制代码
1-3. 避免额外的逗号。如:var arr = [1,2,3,];

1-4. 所有的循环体和判断体都需要用"{}"括起来。如:

错:

  1.                                  if (condition)
  2.                                      statement;
  3.                                  或
  4.                                   if (condition) statement;
  5.                                  

  6. 对:

  7.                                  if (condition) {
  8.                                      statement;                                  或
  9.                                  if (condition) { statement; }
复制代码
1-5. for-in循环体中必须用hasOwnProperty方法检查成员是否为自身成员。避免来自原型链上的污染。

1-6. 变量声明。变量声明应放在function的最上面。避免使用未声明的变量。

错:
  1.        if (n > 0) {
  2.                                    var isvalid = true;      
复制代码
对:
  1.                   var isvalid;
  2.                                  if (n > 0) {
  3.                                    isvalid = true;
  4.                                  }
复制代码
1-7. 不要使用with, void, evil。

1-8. 使用严格的条件判断符。用===代替==,用!==代替!=。

1-9. 下面类型的对象不建议用new构造:new Number, new String, new Boolean, new Object(用{}代替), new Array(用[]代替)。

1-10. 引用对象成员用obj.prop1代替obj[“prop1”],除非属性名是变量。

注:Douban-JSLint是定制过的JSLint

注:如果模块代码中,使用其它全局变量想跳过JSLint的检查,可以在该文件中加入声明,如:

2. Javascript命名规则

2-1. 构造器的首字母大写。如:
  1. function Dialog (config) {
  2.                            statement;
  3.                          }                          var dlg = new Dialog({...});

  4. 2-2. 对象的属性或方法名采用小驼峰式(lower camel-case),如"init", "bindEvent", "updatePosition":

  5.                          Dialog.prototype = {
  6.                            init: function () {},
  7.                            bindEvent: function () {},
  8.                            updatePosition: function () {}                          };
复制代码
2-3. 私有变量名用下划线开头。如:"_current", "_defaultConfig"

2-4. 常量名全部大写,单词间用下划线分隔。如:“CSS_BTN_CLOSE”, "TXT_LOADING"

2-5. 变量名的前缀:
  1. Prefix

  2. Element

  3. Example

  4. integer

  5. nVariableName

  6. i,j,k,m,n, etc. *

  7. integer as counter/iterator

  8. (for i=0; i<=oArray.length; i++)

  9. string

  10. sVariableName

  11. object

  12. oObjectName

  13. is, can, has

  14. boolean

  15. [Boolean name]ConditionName

  16. event method

  17. event attachment

  18. [event type]_MethodName

  19. accessor method

  20. getMethodName

  21. accessor method

  22. setMethodName

  23. Note: Only a counter/iterator should use a single-letter designation.
复制代码
3. 代码格式化要求

3-1. 语句中的必要空格和缩进

3-1-1. 用来包含语句的"()"前后需要跟空格,诸如:
  1. if / for / while / switch ( statements ) { … }
复制代码


3-1-2. "="前后需要跟空格

3-1-3. 数组成员间的","后面需要跟空格

不好:
  1. for (t in selected) { if (!hash[t]) deselect(t) }
复制代码
好:
  1.              for ( t in selected ) {
  2.                if ( !hash[t] ) {
  3.                 deselect(t);              }
复制代码
3-2. 长语句采用断行:

不好:
  1.       TEMPL_SONGLIST.replace('{TABLE}', da['results']).replace('{PREV_NUM}', prev).replace('{NEXT_NUM}', next).replace('{CURRENT_NUM}', current).replace('{TOTAL_NUM}', da.page_total);
复制代码
好:
  1.   TEMPL_SONGLIST.replace('{TABLE}', da['results']).
  2.                            replace('{PREV_NUM}', prev).
  3.                            replace('{NEXT_NUM}', next).
  4.                            replace('{CURRENT_NUM}', current).
  5.                            replace('{TOTAL_NUM}', da.page_total);
复制代码
3-3. 格式化对象参数:

不好:
  1.               embedSWF(id, { url: '/swf/player30792.swf?url=' + el.href, width: 261, height: 30, params: { wmode:'transparent' }, attributes: { id: "player-sample" + i, name: "player-sample" + i }});
复制代码
好:
  1.         embedSWF(id, {
  2.                  url: '/swf/player30792.swf?url=' + el.href,
  3.                  width: 261,
  4.                  height: 30,
  5.                  params: { wmode:'transparent' },
  6.                  attributes: {
  7.                    id: "player-sample" + i,
  8.                    name: "player-sample" + i                });
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP