JavaScript: Bad Practices 翻译+笔记
原文:http://james.padolsey.com/javascript/javascript-bad-practices/
例子请参考原文,这里仅对某些点展开,并有一些额外链接
无需进行构造的变量使用大写字母开头
任何一种编程语言都有特有的代码风格,命名体系中JavaScript中最常用的是驼峰式
而一般来讲普通变量首字母应该小写,而作为对象/函数而言首字母则最好大写,以作区分
不使用var声明来定义变量
var 定义的变量有作用域限制,如果不使用var,则变量全局可用
全局可用的最大弊端就是难于控制,如果下文或上文有相同命名的变量的话会被覆盖,导致无法预估的结果
在同一作用域里把var用于所有的新变量的声明前面
var声明变量只在同一作用域中生效
为了代码简洁,也为了程序运行过程中无需再创建新变量(性能问题),使用一个var定义完所有所需变量
一般可在重构阶段对变量进行整理
使用非全等的等性运算符,进行不同类型的比较
==和!=是非全等号,使用这两个进行比较时会进行内部类型转换,只要转换后的值相等,即返回true
===和!==是全等号,使用这两个进行比较时会进行类型比较,只有类型和值(引用)都相同时才返回true
在复杂的对象中没有对不变的变量(衡量)进行缓存
每次调用对象时都会重新创建这些变量
如果对这些变量进行缓存的话,每次调用对象时则可以重用原来的变量
使用闭包,避免变量在函数执行完毕后被回收
使用太多循环和递归函数
循环和递归的滥用会导致不可预估的性能问题
尽可能将一些不变的变量先缓存起来,避免每次循环都要进行计算
不理解、然后不对重复使用的代码进行抽象,导致大量重复、可读性差的代码
抽象出相同的函数,避免自己重复代码,这个基本上所有语言都要做到。
不理解什么叫做DRY(Don’t Repeat Yourself),不知道怎么用在JavaScript上面
跟上面一个相似
为了精简代码而放弃可读性
JavaScript用在Web开发,需要考虑带宽问题,所以开发时尽可能地精简代码可减少带宽占用
但是代码是写给人看的,书写易读的代码后期维护也方便
可以使用适当的注释,以及发布时的对代码进行压缩
每一行代码都加上注释
每一行都注释说明你的代码基本不可读……
注释要适当,除非你的代码是写给一个JavaScript初学者看的
鉴别浏览器,而不是测试方法是否可用
浏览器的兼容性问题永远没有止境
我们需要以一种标准来衡量,所以检查方法是否被标准所支持,以及浏览器是否支持此标准方法,单独考虑某些特殊浏览器支持的特殊方法,会比每个浏览器都进行鉴别要好得多
在某个循环中不断创建DOM元素
创建DOM元素所消耗的时间很大
尽可能地先在数组里面操作,然后再一次性插入到文档中(性能问题非常明显)
来看看下面的例子:(建议用高级一点的浏览器,IE下最好改小times值)
<script type="text/javascript">
var times = 100000;
Test(ArrayTest, times);
Test(FragmentTest, times);
Test(ForTest, times);
function Test(testMethod, times){
var elem = document.createElement("div"),i,j;
i = +new Date;
testMethod(elem, times);
j = +new Date;
document.write(j-i + ";<br/>");
elem = ""; //防止IE秀逗
}
function FragmentTest(elem, times){
[...]