日期:2014-05-16 浏览次数:20430 次
开发者最容易犯的JavaScript错误,总结出13个。 这些当中可能少不了你犯的错误。 我们描述了这些陋习,并列出来解决办法,希望对开发者有帮助,本文来源http://justjavac.com/javascript/2012/04/05/top-13-javascript-mistakes/。
举例:
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]);
}
举例
var myArray = new Array(10);
第二个问题是开发者使用数组构成器来创建数组,技术上是正确的, 然而会比文字符号(literal notation)慢解决办法:使用文字符号来初始化数组, 不要预定义数组长度。
var myArray = [];
举例:
var myObject = {
someProperty: “value”,
someOtherProperty: undefined
}
未定义属性,将在对象中创建元素(键‘someOtherProperty’和值‘undefined’.)。 如果你遍历数组,检测已存在的元素,那么下面的语句将都返回“未定义/undefined”
typeof myObject['someOtherProperty'] // undefined
typeof myObject['unknownProperty'] // undefined
解决办法:如果你想明确声明对象中的未初始化的属性,标记它们为Null(空)。
var myObject = {
someProperty: “value”,
someOtherProperty: null
}