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

开发者最容易犯的13个JavaScript错误

开发者最容易犯的JavaScript错误,总结出13个。 这些当中可能少不了你犯的错误。 我们描述了这些陋习,并列出来解决办法,希望对开发者有帮助,本文来源http://justjavac.com/javascript/2012/04/05/top-13-javascript-mistakes/。

1.for…数组迭代的用法 Usage of for..in to iterate Arrays

举例:

var myArray = [ “a”, “b”, “c” ];
var totalElements = myArray.length;
for (var i = 0; i < totalElements; i++) {
    console.log(myArray[i]);
}

这里主要的问题是语句中的“for…”不能保证顺序,这意味着你将获得不同的执行结果。 此外,如果有人增加一些其他自定义功能的函数Array.prototype,你的循环将重复遍历这些函数,就像原数组项。

解决办法:一直使用规则的for循环来遍历数组。

var myArray = [ “a”, “b”, “c” ];
for (var i=0; i<myArray.length; i++) {
    console.log(myArray[i]);
}

2.数组维度Array dimensions

举例

var myArray = new Array(10);

第二个问题是开发者使用数组构成器来创建数组,技术上是正确的, 然而会比文字符号(literal notation)慢解决办法:使用文字符号来初始化数组, 不要预定义数组长度。

var myArray = [];

3.未定义属性 Undefined properties

举例:

var myObject = {
    someProperty: “value”,
    someOtherProperty: undefined
}

未定义属性,将在对象中创建元素(键‘someOtherProperty’和值‘undefined’.)。 如果你遍历数组,检测已存在的元素,那么下面的语句将都返回“未定义/undefined”

typeof myObject['someOtherProperty'] // undefined
typeof myObject['unknownProperty'] // undefined

解决办法:如果你想明确声明对象中的未初始化的属性,标记它们为Null(空)。

var myObject = {
    someProperty: “value”,
    someOtherProperty: null
}

4.闭包的滥用Misuse of Closures