Javascript代码规范.doc_第1页
Javascript代码规范.doc_第2页
Javascript代码规范.doc_第3页
Javascript代码规范.doc_第4页
Javascript代码规范.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

javascript代码规范键入文档副标题李博选取日期14目录1.JS文件基本规范21.1.JavaScript文件21.2.版权和版本的声明21.3.编码格式22.程序的版式32.1.空格32.2.缩进32.3.行宽42.4.注释42.5.变量声明52.6.方法声明62.7.命名规则83.语句的规范83.1.简单语句83.2.复杂语句83.3.语句实例93.3.1.return语句93.3.2.if语句93.3.3.for语句93.3.4.while语句103.3.5.do语句103.3.6.switch语句113.3.7.try语句113.3.8.continue语句123.3.9.with语句123.4.额外建议123.4.1.和123.4.2.逗号操作符123.4.3.块作用域123.4.4.赋值表达式123.4.5.=和!=操作符123.4.6.令人混淆的加和减133.4.7.邪恶的eval131. JS文件基本规范1.1. JavaScript文件 JavaScript程序应该作为一个单独的.js文件存储和发布。JavaScript代码不应该嵌入在HTML文件里,除非那些代码是一个单独的会话特有的。HTML里的JavaScript代码大大增加了页面的大小,并且很难通过缓存和压缩来缓解。标签应该在body里越靠后的位置越好。这减少了由于加载script而导致的其它页面组件的延迟。没有必要使用language或者type属性。由服务器而不是script标签来决定MIME类型。1.2. 版权和版本的声明版权和版本的声明位于文件的开头,以注释的结构出现,如图表 11所示:/*可视化网页编辑器*摘要:简要叙述本文件内容以及功能*当前版本:1.1*作 者:输入作者(或修改者)名字*完成日期:*年*月*日*取代版本:1.0*原作者 :输入原作者(或修改者)名字*完成日期:*年*月*日*/图表 11 版权和版本声明1.3. 编码格式所有js文件(以及其他html、css等文件),均使用utf-8编码2. 程序的版式2.1. 空格空行通过将逻辑相关的代码放到一起来增加可读性。空格应该用于如下情况: 1. 关键字后面跟“(”(左圆括号)时应该用一个空格隔开。 代码while(true) 2. 方法名和方法的“(”(左圆括号)之间不要有空格。这利于区分关键字和方法调用。3. 所有的二元操作符,除了“.”(圆点)、“(”(左圆括号)和“”(左中括号),都应该使用一个空格来和操作数隔开。4. 一元操作符和操作数之间不应该使用空格隔开,除了操作符是一个单词时,如typeof。5. for语句控制部分的每个“;”(分号)应该在后面跟一个空格。6. 每个“,”(逗号)后面应该跟一个空格。 2.2. 缩进 缩进的最小单位是4个空格,4个空格为一个缩进单位。不要使用tab键,一个函数的开始顶格写,进入函数体之后缩进一个单位,进入下一层再缩进一个单位,以此类推,例子如下:Function getAttr()For(var I = 0; I n; i+) Alert(“hello”);所有的“”和“”必须缩进的距离都一样,不能出现左括号缩进2个字符,右括号缩进4个字符这样缩进不等的情况。2.3. 行宽 不要让一行代码超过80个字符。当一条语句不能在单独一行写完时,可能有必要拆分它。在操作符后进行拆分,最好是在逗号后面拆分。操作符后面进行拆分减少了通过插入分号伪装copy-paste错误的可能性。下一行应该缩进8个空格。2.4. 注释每一个函数的开头都应该写上注释,注释的格式为:/*此函数用于在获取标签字符串之后对该标签进行计息参数str表示*/(2) 对于新定义变量的用途以及关键的语句必须进行单行注释,注释添加的位置可以在上一行,也可以在行末,视情况而定,如果一个语句较长,推荐在上一行进行注释;如果语句较短可以在行末进行注释。(3)对于一个函数的结尾,应该在结尾处加上此函数结束的标志用于表示函数的结束,例如:/ end of function getAtrr(4)对于有多层嵌套,应该在最外层以及具有关键意义的层的结尾处添加结束注释,例如:For(var I = )Var j = 0;If()For(var t) / end of if/ end of for更新注释非常重要,修改后的代码应该及时的更新注释,函数功能转变了应该及时的更新函数头的注释。(5)让注释有意义。更多的关注于不能马上可见的东西。不要用如下内容浪费读者的时间: 代码i=0;/Setitozero. 一般使用行注释。把块注释用于正式文档或外部注释。 2.5. 变量声明 (1)所有的变量应该在使用前声明,并添加用途注释。(2)在方法体内进行变量声明必须让var语句成为方法体内的第一个语句。代码varcurrentEntry;/currentylyselectedtableentry varlevel;/indentationlevel varsize;/sizeoftable (3)尽量少使用全局变量,隐式的全局变量应该从来不使用。2.6. 方法声明 所有的方法应该在它们使用前声明。内部方法应该位于var语句后面。这让哪些变量包含在它的scope里更清楚。方法名和参数列表的“(”(左圆括号)之间不应该有空格。在“)”(右圆括号)和“”(左大括号)之间有一个空格。 方法体本身缩进4个空格。“”(右大括号)应该和方法声明处对齐。 代码functionouter(c,d) vare=c*d; functioninner(a,b) return(e*a)+b; returninner(0,1); 这个规范可以和JavaScript很好的工作,因为在JavaScript里方法和对象字面量可以放在允许表达式的任何位置。它使用内部方法和复杂结构提供最好的可读性。 代码functiongetElementsByClassName(className) varresults=; walkTheDOM(document.body,function(node) vara;/arrayofclassnames varc=node.className;/thenodesclassname vari;/loopcounter /Ifthenodehasaclassname,thensplititintoalistofsimplenames. /Ifanyofthemmatchtherequestedname,thenappendthenodetothesetofresults. if(c) a=c.split(); for(i=0;ia.length;i+=1) if(ai=className) results.push(node); break; ); returnresults; 如果一个方法字面量为匿名的,则在“function”和“(”(左圆括号)之间应该有一个空格。如果省略空格,则它可能看起来方法名是“function”,而这是错误的。 代码div.onclick=function(e) returnfalse; ; that= method:function() returnthis.datum; ; datum:0; ; 尽量少用全局方法。 2.7. 命名规则 命名应该由26个大小写字母(A . Z, a . z),10个数字(0 . 9)和_(下划线)组成。不要使用国际字符,因为它们可能不易读或者不能在任何地方都能容易理解。不要在名字里使用$(美元符号)或(反斜线符号)。不要使用_(下划线)作为名字的首字母。它有时被用来表示私有,但是它实际上不提供私有性。如果私有性很重要,使用提供私有性的private members。 Avoid conventions that demonstrate a lack of competence.大多数变量和方法名应该以小写字母开始。必须使用new前缀的构造函数应该以大写字母开始。JavaScript不会在省略new时报编译期警告或运行时警告。不使用new时会发生坏事情,所以大写首字母规范是我们拥有的唯一的防御。全局变量应该全部使用大写字母。(JavaScript没有宏或常量,所以没有多少要求使用大写字母来表示JavaScript的特性的场景)3. 语句的规范3.1. 简单语句每行应该包含至少一个语句。在每个简单语句末尾添加一个“;”(分号)。注意一个给方法或对象赋值的赋值语句仍然是一个赋值语句,所以也必须以分号结尾。JavaScript允许任何表达式作为语句使用。这可能产生一些错误,特别是在插入分号时。唯一可以当作语句使用的表达式是赋值表达式和调用表达式。3.2. 复杂语句复合语句是包含一个用“”(大括号)包围语句列表的的语句。 1, 包围的语句应该再缩进4个空格。 2, “”(左大括号)应该位于开始复合语句的行的末尾。 3, “”(右大括号)应该新起一行并且和相匹配的“”所在那行的起始位置对齐 4, 当语句是控制结构的一部分时,所有语句都应该用括号包围,即使是单行语句,例如if或for语句。这让添加语句更容易而且不会引起bug。3.3. 语句实例3.3.1. return语句具有值的return语句不应该使用“()”(圆括号)包围值。返回值表达式必须和return关键字在同一行从而避免插入分号。3.3.2. if语句if语句应该使用如下格式: 代码1. if(condition) 2. statements; 3. 4. 5. if(condition) 6. statements; 7. else 8. statements; 9. 10. 11. if(condition) 12. statements; 13. elseif(condition) 14. statements; 15. else 16. statements; 17. 3.3.3. for语句 for语句应该使用如下格式: 代码1. for(initialization;condition;update) 2. statements; 3. 4. 5. for(variableinobject) 6. statements; 7. 第一种格式应该和数组使用。 第二种格式应该和对象使用。注意添加到对象的prototype中的成员将被包含在遍历中。通过使用hasOwnProperty方法来区分对象的成员是明智的: 代码1. for(variableinobject) 2. if(object.hasOwnProperty() 3. statements; 4. 5. 3.3.4. while语句 while语句应该使用如下格式: 代码1. while(condition) 2. statements; 3. 3.3.5. do语句do语句应该使用如下格式: 代码1. do 2. statements; 3. while(condition); 不像其它复合语句,do语句始终使用“;”(分号)结尾。3.3.6. switch语句 switch语句应该有如下格式: 代码1. switch(expression) 2. caseexpression: 3. statements; 4. default: 5. statements; 6. 每个case和switch对齐,这避免了缩进过度。 每组语句(除了default)应该以break,return或者throw结束。不要fall through。3.3.7. try语句 try语句应该使用如下格式: 代码1. try 2. statements; 3. catch(variable) 4. statements; 5. 6. 7. try 8. statements; 9. catch(variable) 10. statements; 11. finally 12. statements; 13. 3.3.8. continue语句不要使用continue语句。它会让方法的控制流程模糊。3.3.9. with语句 不要使用with语句。3.4. 额外建议3.4.1. 和 使用替代new Object()。使用替代new Array()。 当成员名字为连续的整数时使用数组。当成员名字为任意的字符串或名字时使用对象。3.4.2. 逗号操作符 不要使用逗号操作符,除了for语句的控制部分的严格使用。(这不适合逗号操作符,它应该用于对象字面量,数组字面量,var语句和参数列表。)3.4.3. 块作用域 在JavaScript里块没有作用域,只有方法有作用域。不要使用块,除了复合语句一定需要用到外。3.4.4. 赋值表达式 不要在if和while语句的条件部分做赋值。不要写不易懂的代码。3.4.5. =和!=操作符 始终使用=和!=操作符会更好。=和!=操作符会做类型强制转换。特别是,不要使用=来和“假”值做比较。3.4.6. 令人混淆的加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论