Javascript Best Practices

本文深入探讨了JavaScript编程中的常见问题与解决方法,包括全局变量管理、避免单var形式问题、var散布问题、for循环优化、switch模式、避免隐式类型转换、eval()的使用、parseInt()转换问题、单词分割等核心内容。

[1] http://www.thinkful.com/learn/javascript-best-practices-1/

[2] http://www.zhangxinxu.com/wordpress/?p=1173

 

新名词:JSLint

 

记录自己平时不太清楚的部分,包括知道问题不知道解决方案,以及不知道问题的部分。 

1.  全局变量

问题:

  * 命名冲突导致变量被覆盖 

解决: 

  * 使用闭包和模块模式(module pattern)[1]

  * 命名空间模式[2] 或 

函数立即自动执行

      + 隐式全局变量 

 

         - 记得始终使用var来声明变量;使用链分配而不是任务链声明变量, 不要使用var a=b=0; 可以使用var a, b;

         - 通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的;无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的

 

 

 2. 单var形式

问题:

  * 程序内部存在不同程度的声明,可读性不强,不易于维护

解决: 

  * "使用一个var语句声明多个变量,并以逗号分隔。像这种初始化变量同时初始化值的做法是很好的。这样子可以防止逻辑错误(所有未初始化但声明的变量的初始值是undefined)和增加代码的可读性。" [2]

 

3.  var散布的问题hoisting: a problem with scattered vars 

问题:

  * JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。对于JavaScript,只 要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。)[2]

解决:  

  * 预先声明你想使用的全部变量
 

4. for循环

问题: 每次循环时数组的长度都要重新获取,降低性能

解决:

  * 循环数组或对象的值时,缓存数组或集合的长度。[2]

for (var i = 0, max = myarray.length; i < max; i++) {
//code
}
/第一种变化的形式:

var i, myarray = [];
for (i = myarray.length; i–-;) {
// 使用myarray[i]做点什么
}

//第二种使用while循环:

var myarray = [],
i = myarray.length;
while (i–-) {
// 使用myarray[i]做点什么
}
  * 使用i=i+1 或 i+=1来替换i++[2]

 

 

5. for-in循环(也被称为“枚举”)[2]
问题: 循环对象或内容不确定,导致循环内容错误

解决: 采用hasOwnProperty() 

 

 

 

6. 不要扩展内置原型 Augmenting built-in prototypes [2]

问题: 维护性差, 属性添加到原型中,如果不使用hasOwnProperty() 会导致循环混乱

解决: 不增加内置原型

(没懂) 

 

7.  switch模式,代码风格

 

8. 避免隐式类型转换 avoiding implied typecasting

问题: 变量比较时隐式类型转换会导致结果出错 

解决: 比较值和表达式类型的时候始终使用===和!==操作符

 

9.  避免eval()[2]

问题: eval()方法接受任意的字符串,并当做javascript代码来处理。 "evals()是魔鬼"; 安全隐患;

解决: 用方括号表示法来访问动态属性会更好更简单; 使用new Function()代替; 封装eval()调用到一个即时函数中。

 

10. parseInt()下的数值转换

问题: 基数参数省略,导致意外结果

解决: 将字符串转换成数字 

 

11. 分割单词 

构造函数:upper camel case

其余函数: lower camel case

变量: lower camel case or underline 

 

 

 

 

转载于:https://www.cnblogs.com/linne/p/3308111.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值