开发者最容易犯的开发者最容易犯的13个个JavaScript错误错误
开发者最容易犯的JavaScript错误,总结出13个。这些当中可能少不了你犯的错误^_^。我们描述了这些陋习,并列出来解决
办法,希望对开发者有帮助。
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);
这里有两个不同的问题。首先,开发者尝试创建一个包含10项的数组,这将创建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
举例:
function(a, b, c) {
var d = 10;
var element = document.getElementById(‘myID’);