日期:2014-05-16  浏览次数:20348 次

JavaScript的陷阱

转自:http://dancewithnet.com/2008/10/27/javascript-gotchas/#event-handlers

?? 这本来是翻译Estelle Weyl的《15 JavaScript Gotchas》 , 里面介绍的都是在JavaScript编程实践中平时容易出错或需要注意的地方,并提供避开这些陷阱的方法,总体上讲,就是在认清事物本质的基础样要坚持 好的编程习惯,其实这就是Douglas Crockford很久以前提出的JavaScript风格要素问题了,有些内容直接是相同的,具体请看《Javascript风格要素(1)》 和《Javascript风格要素(2)》 。在翻译的过程中,我又看到了贤安去年翻译的《JavaScript的9个陷阱及评点》 ,其内容又有些交叉在一起,所以我就在现有翻译的基础上做了一个简单的拼合,并依据自己的理解增加了一些注释和解释。

  1. 区分大小写:变量名、属性和方法全部都区分大小写
  2. 不匹配的引号、圆括号或花括号将抛出错误
  3. 条件语句:3个常见陷阱
  4. 换行:一直用分号结束语句来避免常见的换行问题
  5. 标点法:在对象声明的尾部逗号将导致出错
  6. HTML id 冲突
  7. 变量作用域:全局变量对局部变量
  8. 函数重载:当重载不存在时,覆盖函数
  9. 区分string.replace()函数不是全局的
  10. parseInt应该包含两个参数
  11. “this”和绑定问题
  12. 为参数设置默认值,以免你遗漏它们
  13. for each循环是用于对象而不是数组
  14. switch语句需要点技巧
  15. 如果你要检查null,应该先检查undefined
  16. 时间处理陷阱

区分大小写

变量名和函数名都是区分大小写的。就像配错的引号一样,这些大家都知道。但是,由于错误是不作声的,所以这是一个提醒。为自己选择一个命名规则,并坚持它。而且,记住JavaScript中的原生函数和CSS属性都是骆驼拼写法(camelCase) 。

getElementById
(’myId’) != getElementByID
(’myId’); //它应该是“Id”而不是“ID”


getElementById(’myId
‘) != getElementById(’myID
‘); // “Id”也不等于“ID”



document.getElementById('myId').style.Color
; //返回 "undefined"








不匹配的引号、圆括号或花括号

避免陷入不匹配的引号、圆括号或花括号陷阱的最好方式是编码时一直同时写出打开和关闭这两个元素符号,然后在其中间加入代码。开始:

var myString = ""; //在输入字符串值之前写入这对引号


function myFunction(){
 if(){//关闭每个打开的括弧


 }
}
//统计所有的左括号和右括号数量,并且确保它们相等


alert(parseInt(var1)*(parseInt(var2)+parseInt(var3))); //关闭每个打开的圆括号








每当你打开一个元素,请关闭它。当你添加了关闭圆括号后,你再把函数的参数放进圆括号中。如果有一串圆括号,统计所有打开的圆括号和所有关闭的圆括号,并且确保这两个数字相等。

条件语句(3个陷阱)

  1. 所有的条件语句都必须位于圆括号中。执行语句主体不管是一句还是多句都强烈建议用花括号包围起来,这样能避免很多因修改或嵌套而产生的潜在错误。
    if(var1 == var2){//statement
    
    }