30
4.1.2 outterHTML ................................................................................ 30 4.1.3 集合类对象问题: ................................................................... 30 4.1.4 窗口 ........................................................................................... 30 4.1.5 关于iframe ................................................................................ 30 4.1.6 setAttribute()设置属性问题 ................................................ 31 4.1.7 XMLHTTP的区别 ......................................................................... 31 4.1.8 innerText .................................................................................. 31 4.1.9 removeNode() ............................................................................ 31 4.1.10 img对象alt和title的解析 ............................................... 31 4.1.11 body 对象 ................................................................................ 32 4.1.12 const 问题 .............................................................................. 32 4.1.13 自定义属性 ............................................................................. 32 4.1.14 input的type属性 ................................................................. 32 4.1.15 nodeName 和 tagName 问题 .................................................. 32 4.1.16 用idName字符串取得对象的问题 ....................................... 32 4.1.17 event ........................................................................................ 32 4.1.18 event.x 与 event.y 问题 .................................................... 33 4.1.19 parentElement ........................................................................ 33 4.1.20 document.all .......................................................................... 33 4.1.21 DIV对象 ................................................................................... 33
4
上海天缘迪柯信息技术有限公司
1 概述
不管是JavaScript代码其它任何语言编写的代码,程序员都能编写出让计算机能够识别并正常运行的代码,但是作为一个优秀的程序员就应该是能够编写既能让电脑识别的代码又能让其它开发人员能够看懂并愿意去看的规范代码(规范代码就是结构清晰、可读性高、代码易于维护、不至于太过程化而杂乱无章),也就是书写可维护性的代码。
什么叫可维护性代码呢?它需要遵循以下特别: ?
可理解性:其他人可以接手代码并理解它的意图和一般途径而无须原开发人员的完
整解释
? ?
? ?
直观性:代码中的东西一看就能明白,不管其操作过程多么复杂 可适应性:代码以一种数据上的变化不要求完全重写的方法撰写 可扩展性:在代码架构上已考虑到未来允许对核心功能进行扩展
可调试性:当有地方出错时,代码可以给予你足够的信息来尽可能直接的确定问题
所在一种让代码变得可维护的简单途径就是形成一套JavaScript代码的书写约定。
2 适用范围
本规范适用于公司所有的JS源代码,代码编写和代码审核提供参考和依据。
3 规范 3.1 可读性
可读性的大部分内容都是和代码缩进相关的,必须保证代码有良好的格式。可读性的另一方面就是注释,一般而言,有如下一些地方需要进行注释
3.1.1 函数和方法
每个函数或方法都应该包含一个注释,描述其目的和用于完成任务所可能使用的算法,
5
陈述事先的假设也非常重要,如参数代表什么,函数是否有返回值等等
3.1.2 大段代码
用于完成单个任务的多行代码应该在前面放一个描述任务的注释
3.1.3 复杂的算法
如果使用了一个独特的方式解决某个问题,则要在注释中解释你是如何做的,这不仅仅可以帮助其它浏览你代码的人,也能在下次你自己查阅代码的时候帮助理解
3.1.4 Hack
因为存在浏览器差异,JavaScript代码一般会包含一些Hack,不要假设其他人在看代码的时候能够理解Hack所要应付的浏览器问题,如果因为某种浏览器无法使用普通的方法,所以你需要用一些不同的方法,那么请将这些信息放在注释中。
3.1.5 代码排版
3.1.5.1 行长度
每行代码应小于 80 个字符。如果代码较长,应尽量选择换行,下一行代码应缩进4 个空格。这样可以使代码排版整齐,减轻阅读代码的疲劳感,以增强代码的可阅读性
3.1.5.2 行结束
JavaScript 语句应该以分号结束。但大多数浏览器允许不写分号,只要在本应是分号的地方有一个换行符就行。但是如果代码行较长需要换行的时候,有哪些注意事项呢?换行应选择在操作符和标点符号之后,最好是在逗号','之后,而不要在变量名、字符串、数字、或')' ']' '++' '--'等符号之后换行。这样可以有效的防止拷贝、粘贴而引起的错误,并可有效地增强代码的可阅读性。
例如:var valueB = valueA ///bad +1;
可以替换为:var valueC = valueB + ///good valueA;
6
上海天缘迪柯信息技术有限公司
3.1.5.3 注释
我们会强调代码中注释数量的多少,而轻视了对注释质量的提高。编码是及时添加注释,会给后续代码的维护人员带来很大的便利。但是如果注释不注意更新,或者由于拷贝、粘贴引起的错误的注释,则会误导阅读人员,反而给阅读带来障碍,除了注释要及时更新外,我们还应对注释的内容要特别关注。注释要尽量简单、清晰明了,避免使用含混晦涩的语言,同时着重注释的意义,对不太直观的部分进行注解。
例如:
//following section is used to initialize golbal variables (good) var valueA = 0; //initialize valueA to be sero (bad) var valueB = 1; ...
//call f1 function after waiting for 50 seconds. (good) setTimeout (f1,50000); //set timeout to be 20s (copy error)
大功能块的功能描述: /*
*@desc:功能描述 *@param:参数描述 *@return:返回值 */
3.1.5.4 缩进
建议使用4个空格来进行缩进
3.1.5.5 空白符
适当的空白行可以大大提高代码的可阅读性,可以使代码逻辑更清晰易懂。同时,在表达式中适当的留空白,也会给代码的阅读带来方便,关键字的后面如有括号,则最好在关键字和左括号'('之间留空白,如 for, if, while 等。而函数名和括号之间则不宜留空白,但若是匿名函数,则必须在 function 和左括号'('之间留空白,否则,编辑器会误认为函数名为 function。在表达式中,二元运算符 ( 除左括号'(',左方括号'[',作用域点'.') 和两个操作数之间最好留空白。一元运算符(若不是词 typeof 等)和其操作数之间不宜留空白。逗号','的后面需要留空白,以显示明确的参数间隔,变量间隔等。分号';'之后通常表明表达语句的结束,而应空行。在 for 的条件语句中,分号之后则应该留空白。
7
总结一句就是缩进和注释可以带来更可读的代码,还有就是用空行来将逻辑相关的代码块分割开可以提高程序的可读性,增加程序的可读性只为了在未来代码更容易维护。
3.2 变量和函数命名
JavaScript是严格区分大小写的,名称的也遵循以下规则:
? ? ? ? ?
第一个字符必须是字母、下划线、或一个美元符号$ 其它字符可以是字母、下划线、美元符号或数字
变量、参数、成员变量、函数等名称均以小写字母开头,构造器的名称以大写字母开头
下划线'_'开头的变量一般习惯于标识私有/局部成员
美元符号'$'开头的变量习惯于标识系统相关,比如系统进程等。应避免用下划线'_'或美元符号'$'来命名标识符。尽可能地降低代码的阅读负担
每一行最多只包含一条语句,必须将分号放在简单语句的结尾外,虽然分号在JavaScript是可有可无了,但是为了压缩后不容易报错,强制性的必须每条js代码都得以分号结束
3.2.1 变量名应为名词
如car或person,如果是私有变量,则在名称前加_下划线
3.2.2 函数名应该为动词开始
如getName(),返回布尔类型值的函数一般以is开始,如isEnable(),如果是普通函数,则第一个字母小写,如果是构造函数,则第一个字母大写。函数名与((左括号)之间不应该有空格。)(右括号)与 开始程序体的{(左大括号)之间应插入一个空格,}(右大括号)应该与函数名在同一行而不应该另起一行
3.2.3 变量和函数都应使用合乎逻辑的名字
不要担心长度,长度问题可以通过处理和压缩
8