版本更新时间修改人备注V1.0??文档创立信息技术中心网站技术部JavaScript开发规范目录文献命名......................................................................................错误!未定义书签。代码外观......................................................................................错误!未定义书签。注释规范......................................................................................错误!未定义书签。命名规范......................................................................................错误!未定义书签。语句规范......................................................................................错误!未定义书签。注意事项......................................................................................错误!未定义书签。参照资料文献命名JavaScript程序应当作为一种.js文献存储和发布。文献名全小写,标记版本号和特性阐明,扩展名小写,例如search1.1-src.js。JavaScript代码尽量不要嵌入在HTML中文献开始包括类似如下注释阐明/********************************************//文献名://文献功能描述://创立人://创立时间://描述://修改人://修改时间://修改描述://******************************************/文献功能描述着重于描述文献功能与阐明,详情应在类注释中描述。一天内有各种修改只需做做一种修改标记,在所有代码修改处加上修改标记注释。代码外观列宽代码列宽控制在100字符左右。换行当表达式超过或即将超过规定列宽,遵循如下规则进行换行在逗号后换行。在操作符前换行。规则1优先于规则2。缩进缩进应当是每行一种Tab(4个空格),不要在代码中使用Tab字符。空行空行是为了将逻辑上有关联代码分块,如下状况应加入一种空行。类与类定义之间。办法与办法、属性与属性之间。办法中不同逻辑块之间。注释与它注释语句间不空行,但与其她语句间空一行。空格核心字和(应当用空格隔开。办法名和(之间不要使用空格。各种参数用逗号隔开,每个逗号后都应加一种空格。语句中表达式之间用空格隔开。一元操作符和操作数之间不应当使用空格隔开,除了操作符是一种单词时,如typeof。二元操作符,除了.、(和[,都应当使用一种空格来和操作数隔开。for语句控制某些;应当在背面跟一种空格。括号左括号(不要紧靠核心字,中间用一种空格隔开。左括号(与办法名之间不要添加任何空格。没有必要话,不要在return语句中使用()。花括号左花括号{放于核心字或办法名同一行末尾。普通右花括号}独立成行,不与任何语句并列一行。If、for、while、do等语句后必要使用{},虽然{}号中为空或只有一条语句。右花括号}后加注释阐明语句块结束。变量声明总是使用var声明变量。一行只做一种声明。在变量声明时就做初始化。变量声明应置于块开始位置。例外:for(vari=0;ilen;i++){}应避免不同层次间变量重名。办法内禁止定义和使用全局变量。注释规范注释应当是解释为什么和做什么,而不是简介是什么。总是使注释保持最新。变量声明时,使用行尾注释;其她状况下,使用单行注释并于标记代码对齐。不注释难以理解代码,而应当重写它。避免多余或不恰当注释。对由循环和逻辑分支构成代码使用注释。使用品有一致风格和语言书写注释。用空白将注释同注释分隔符分开。在没有颜色提示状况下查看注释时,这样做会使注释很明显且容易被找到。命名规范命名原则命名由字母、数字和_构成。命名是为了协助人们阅读。避免使用系统保存字。应选取对的名称,可以表白功能或定义目。在编程上通过命名可以将各项明确区别开来。避免容易被主观解释难懂名称,避免歧义。只要适当,在变量名末尾或开头加计算限定符。在一组有关变量命名中使用互补对,如min/max、begin/end和open/close。布尔变量名应当包括Is,这意味着Yes/No或True/False值。在命名状态变量时,避免使用诸如单纯Flag或Status术语。不要使用匈牙利语表达法。缩写不要将缩写或缩略形式用作标记符名称构成某些。不要使用计算机领域中未被普遍接受缩写。在恰当时候,使用众所周知缩写替代冗长词组名称。如URL、HTML。使用缩写时,对于超过两个字符长度缩写请使用Pascal大小写或Camel大小写,但应当大写仅有两个字符缩写,如System.IO而不是System.Io。不要在标记符或参数名称中使用缩写。类名称用名词或名词短语命名类使用Pascal大小写。用名词或名词短语命名类。使用全称避免缩写,除非缩写已是一种公认商定,如URL、HTML不要使用类型前缀,不要使用下划线。Namespace命名所有使用小写声明类时需带上Namespace。属性使用Camel大小写。用名词或名词短语命名类。内部受保护属性使用下划线开头(_)。参数参数名称应当具备足够描述性,以便参数名称及其类型可用于在大多数状况下拟定它含义。对参数名称使用Camel大小写。办法使用动词或动词短语命名办法。使用Camel大小写。类内部受保护办法使用下划线开头(_)事件对事件解决程序名称使用on开头。事件解决程序都提供两个参数sender,args。使用Before,After表达事件发生时间顺序,如onBeforeSave,onAfterSave。某些事件可以用时态表达顺序,如onChange,onChanged使用Camel大小写。变量使用Camel大小写。用名词或名词短语命名类。类内部或函数内部使用变量使用下划线开头(_)。常量如下规则概述常量命名指南:所有单词大写,各种单词之间用_隔开。语句规范每行最多包括一种语句。不要在一行中以分号分隔各种语句(循环变量使用或压缩代码不用遵循此规则)。语句缩进应符合代码外观规定。左花括号{跟随在父语句背面。虽然只有一条子语句要不要省略花括号{}。不要在return语句中使用括号,或花括号。if、if-else、ifelse-if语句if(condition){statements;}if(condition){statements;}else{statements;}if(condition){statements;}elseif(condition){statements;}else{statements;}for语句for(initialization;condition;update){statements;}for(variableinobject){statements;}注意:在循环过程中不要修改循环计数器;不要使用空循环。while语句while(condition){statements;}do语句do{statements;}while(condition);注意:do语句始终使用;(分号)结尾。switch-case语句switch(condition){case1:statements;break;case2:statements;break;default:statements;break;}注意:switch中每个case各占一行。switch中case按顺序排列。为switch语句提供default分支。所有非空case语句必要用break;语句结束。try-catch语句try{statements;}catch(e){statements;}try{statements;}catch(variable){statements;}finally{statements;}return语句具备值return语句不应当使用()(圆括号)包围值。返回值表达式必要和return核心字在同一行从而避免插入分号。with块语句禁止使用with块语句注意事项1.scriptsrc=”filename.js”标签应当在body里越靠后位置越好。2.在办法顶端定义所有变量,var语句应当为办法体内第一种语句。3.尽量少使用全局变量,隐式全局变量应当从来不使用。4.代码构造应当提供最佳可读性。5.如果一种字面量为匿名,则在function和((左圆括号)之间应当有一种空格。6.不要在命名中使用里使用$,把它留给JQuery。7.不要使用_(下划线)作为名字首字母,_有时被用来表达私有,但是只是语义上。8.全局变量应当所有使用大写字母。9.在每个简朴语句末尾添加一种;(分号)。10.使用{}代替newObject()。使用[]代替newArray()。11.当成员名字为持续整数时使用数组。当成员名字为任意字符串或名字时使用对象。12.谨慎使用逗号操作符,普通涉及在for语句控制某些、对象字面量、数组字面量、var语句和参数列表。13.不要在if和while语句块中对条件某些赋值。14.始终使用===和!==操作符会更好,==和!=操作符会做类型强制转换。15.不要使用==来和假值做比较,if(obj)普通都可以达到目。16.注意不要在+背面跟+或++。这种模式令人混淆。17.eval办法是JavaScript里最易滥用特性。除非解析JSON数据,否则不要使用它。