js学习笔记-编写高效、规范的js代码-Tom

编写高效、规范的js代码:

1、变量命名空间问题,尽量使用局部变量,防止命名冲突(污染作用域中的全局变量);全局空间命名的变量可以在对应的文档域任意位置中使用window调用。

2、尽量使用单var定义变量(作用域开始先申明并赋值变量,便于后边使用),使用var定义的变量只作用于对应的作用域中,如定义的全局变量作用于全局作用域,函数中定义的变量作用于该局部作用域中。未用var定义的变量相当于一个全局变量,在函数中出现的该类变量作用域全局域。(但是var定义的全局变量不能用delete删除,而未定义的全局变量可以用delete删除,说明未定义的全局变量就是全局对象的一个属性。)

3、for循环用于遍历数组及类似数组的对象,采用缓存数组(或集合)的长度是比较好的形式,提高效率如下:

1 // 次佳的循环
2 for (var i = 0; i < myarray.length; i++) {
3    // 使用myarray[i]做点什么
4 }

1 for (var i = 0, max = myarray.length; i < max; i++) {
2    // 使用myarray[i]做点什么
3 }

详细了解js作用域请访问  http://www.w3cfuns.com/blog-3-5396544.html

4、for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”。

5、JavaScript的变量在比较的时候会隐式类型转换。这就是为什么一些诸如:false == 0 或 “” == 0 返回的结果是true。为避免引起混乱的隐含类型转换,在你比较值和表达式类型的时候始终使用===和!==操作符。

6、避免(Avoiding) eval()

可以用Function()代替eval(),因为eval()会干扰作用域,它可以访问和修改它外部作用域中的变量,而Function只管全局作用域,防止本地变量的污染。

 1 (function () {
 2    var local = 1;
 3    eval("local = 3; console.log(local)"); // logs "3"
 4    console.log(local); // logs "3"
 5 }());
 6 
 7 (function () {
 8    var local = 1;
 9    Function("console.log(typeof local);")(); // logs undefined
10 }());

7、命名规范,遵循标准命名规范。

8、注释:增加代码可读性维护性。

 

posted @ 2015-05-24 15:08  Amy_Li  阅读(232)  评论(0编辑  收藏  举报