javascript 基本技巧
for循环问题:
for循环便利数组的时候,尤其数组设计到DOM方法返回的对应数组,先使用临时对应存储可以很好的提高效率。
functions looper(){ var i = 0, max, myArray = []; myArray = document.getElementsByName(); for( i = 0, max = myArray.length; i < max; i++){ } }
这种方式下,对长度的值只去一次,但应用到整个循环中。在所有浏览器中,通过将HTML容器上需要遍历的此数缓存起来都会大大提高速度
编码约定
确定并遵循编码约定可以使得代码更为一致、可预测、容易阅读和理解。
确定并一致遵循约定比这个具体约定是什么更为重要!!
缩进:tab缩进或是空格缩进(一般为4个空格)。只需要对大括号中的所有代码执行缩进
大括号:即使在可选情形下也都请使用大括号。技术上来说,if语句和for语句中如果仅有一条语句可不需要大括号,但为了一致性和方便升级,最好还是使用大括号
开放的大括号的位置:通常大括号和语句放在同一行还是放在接下来的一行只是个人习惯不同,但有些情形括号的位置会影响程序的执行结果,这是由分号插入机制导致的,在JS中当没有正确使用分号结束本语句,会自动不上分号,如下面的函数会运行出错:
// 警告: 未预期的返回值 function func(){ return { name: “Batman” } }
空格:空格的使用有助于改善代码的可读性和一致性,JS中在列表表达式和语句结束后添加空格
> 分开for循环各部分的分号之后,如: for (var i = 0; i < 10; i++){}
> 限定数组的逗号后面,如: var a = [1, 2, 3];
> 对象属性的逗号之后和将属性名和属性值分开的冒号之后:var m = {a: 0; b: 1};
> 分隔函数中参数的逗号之后,如 myFunc(a, b, c)
> 函数声明的大括号之前,如:function myFunc() {}
> 在匿名函数表达式之后,如:var myfunc = function () {};
> 分隔所有操作符和操作,即在+, -, *, =, <, >, <= ……等之后使用空格
> 在函数中使用大括号之前
> 在大括号结束符和else或while之后
命名约定
采用一致的方法对变量和函数进行命名,可提高代码可预测性和可维护性
构造函数首字母大写
分隔单词,如采用驼峰式命名方法和属性,命名变量采用所有单词都小写并用下划线分隔单词,这样有助于明显区分函数和其他标志(常量和对象)
JS无法定义常量,通常采用变量名全部大写约定编码该变量在程序生命周期中不可改变
下划线前缀来标识私有属性/方法/变量
编写注释
通常有必要对所有函数、函数参数、返回值和其他有趣或不同学唱的算法和技术进行注释,且要不断更新注释,良好的注释也会自动生成文档
编写API文档
JS自动生成API文档的工具: JSDoc Toolkit和YUIDoc
生成API文档的步骤:
编写特殊格式代码块
运行工具解析代码和注释
发布工具解析的结果,通常采用HTML格式发布
需要一些特殊的标签:
如以下该函数可以将字符串翻转:
var reverse = function (input) { // … return output; }
@param是输入参数的标签, @return是表示返回值的标签,文档工具会接卸这些标签生成一系列格式非常好的文档。
在正式发布时精简代码
通常采用工具实现代码的精简,如YUICompress或是ClosureCompiler:
减少空白位置、注释和其他JS代码不重要的部分来减小文件大小
将变量名重新命名为一个较短的名称
运行JSLint
JSLint会寻找一些冲突,如:
无法执行的代码
在定义之前使用变量
不安全的UTF字符
使用void、with或eval
在正则表达式中不合适的转义字符
参考资料:《JavaScript模式》