文本缩进: 一次缩进两个空格。
注释编写: 注释是了解代码写法和目的的唯一途径。特别是在写一些看似琐碎的无关紧要的代码时,由于记忆点不深刻,注释就变得尤为重要了。
变量声明: 总是使用 var 来声明变量。如不指定 var,变量将被隐式地声明为全局变量,这将对变量难以控制。如果没有声明,变量处于什么定义域就变得不清(可以是在Document 或 Window 中,也可以很容易地进入本地定义域)。所以,请总是使用var 来声明变量。
命名法说明:
a).命名法说明
1).camel命名法,形如thisIsAnApple
2).pascal命名法,形如ThisIsAnApple
3).下划线命名法,形如this_is_an_apple ·
4).中划线命名法,形如this-is-an-apple
根据不同类型的内容,必须严格采用如下的命名法:
b).变量名:必须使用camel命名法
c).参数名:必须使用camel命名法
d).函数名:必须使用camel命名法
e).方法/属性:必须使用camel命名法
boolean类型的应当使用is、has等起头,表示其类型;·
常量使用全部字母大写,单词间下划线分割的命名方式.
空格说明: 通常运算符 ( = + - * / ) 前后需要添加空格:
使用带类型判断的比较判断: 总是使用=== 精确的比较操作符,避免在判断的过程中,由 JavaScript 的强制类型转换所造成的困扰。如果你使用== 操作符,那比较的双方必须是同一类型为前提的条件下才会有效。仅当判断 null 或undefined 时,允许使用 == null。
分号: 总是使用分号,因为隐式的代码嵌套会引发难以察觉的问题。
不要在循环体中包含函数表达式,事先将函数提取到循环体外。(解释:循环体中的函数表达式,运行过程中会生成循环次数个函数对象。)
10.字符串: 统一使用单引号(‘),不使用双引号(“)。这在创建 HTML 字符串非常有好处:
11.用三元操作符分配或返回语句。在比较简单的情况下使用,避免在复杂的情况下使用。没人愿意用10 行三元操作符把自己的脑子绕晕.
12.使用json: 当需要将数据结构存储成纯文本,或者通过
Ajax 发送/取回数据结构,尽可能使用 JSON 代替XML。JSON (JavaScript Object Notation) 是一个更简洁有效的数据存储格式,并且不依赖任何语言(and is a language-neutral)。
13.类型转换
转换成 string 时,使用 + ''。( num + ‘’; )
转换成 number 时,通常使用 +。( + str ;)
转换成 boolean 时,使用 !!。
string 转换成 number,要转换的字符串结尾包含非数字并期望忽略时,使用parseInt。必须指定进制。
number 去除小数点,使用 Math.floor / Math.round / Math.ceil,不使用parseInt。
14.数组
使用数组字面量[] 创建新数组,除非想要创建的是指定长度的数组。
遍历数组不使用 for in。(解释:数组对象可能存在数字以外的属性, 这种情况下 for in 不会得到正确结果。)
15.减少 delete 的使用。(解释:如果没有特别的需求,减少或避免使用delete。delete 的使用会破坏部分JavaScript 引擎的性能优化。)
16.DOM
对于单个元素,尽可能使用document.getElementById 获取,避免使用document.all。
对于多个元素的集合,尽可能使用 context.getElementsByTagName 获取。其中context 可以为 document 或其他元素。指定tagName 参数为 * 可以获得所有子元素。
遍历元素集合时,尽量缓存集合长度。如需多次操作同一集合,则应将集合转为数组。(解释:原生获取元素集合的结果并不直接引用DOM 元素,而是对索引进行读取,所以 DOM 结构的改变会实时反映到结果中。)
获取元素的直接子元素时使用 children。避免使用childNodes,除非预期是需要包含文本、注释和属性类型的节点。
DOM事件
优先使用 addEventListener / attachEvent 绑定事件,避免直接在HTML 属性中或 DOM 的expando
属性绑定事件处理。(解释:expando 属性绑定事件容易导致互相覆盖。)
使用 addEventListener 时第三个参数使用
false。(解释:标准浏览器中的
addEventListener 可以通过第三个参数指定两种时间触发模型:冒泡和捕获。而 IE 的attachEvent 仅支持冒泡的事件触发。所以为了保持一致性,通常
addEventListener 的第三个参数都为 false。)
在没有事件自动管理的框架支持下,应持有监听器函数的引用,在适当时候(元素释放、页面卸载等)移除添加的监听器。
网友评论