高质量JavaScript代码书写基本要点
2010-10-25 12:58:02 来源:WEB开发网最后一个需要对循环进行调整的是使用下面表达式之一来替换i++。
i = i + 1
i += 1
JSLint提示您这样做,原因是++和–-促进了“过分棘手(excessive trickiness)”。//zxx:这里比较难翻译,我想本意应该是让代码变得更加的棘手
如果你直接无视它,JSLint的plusplus选项会是false(默认是default)。
还有两种变化的形式,其又有了些微改进,因为:
» 少了一个变量(无max)
» 向下数到0,通常更快,因为和0做比较要比和数组长度或是其他不是0的东西作比较更有效率
第一种变化的形式:
var i, myarray = [];
for (i = myarray.length; i–-;) {
// 使用myarray[i]做点什么
}
第二种使用while循环:
var myarray = [],
i = myarray.length;
while (i–-) {
// 使用myarray[i]做点什么
}
这些小的改进只体现在性能上,此外JSLint会对使用i–-加以抱怨。
for-in循环(for-in Loops)
for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”。
从技术上将,你可以使用for-in循环数组(因为JavaScript中数组也是对象),但这是不推荐的。因为如果数组对象已被自定义的功能增强,就可能发生逻辑错误。另外,在for-in中,属性列表的顺序(序列)是不能保证的。所以最好数组使用正常的for循环,对象使用for-in循环。
有个很重要的hasOwnProperty()方法,当遍历对象属性的时候可以过滤掉从原型链上下来的属性。
思考下面一段代码:
// 对象
var man = {
hands: 2,
legs: 2,
heads: 1
};
// 在代码的某个地方
// 一个方法添加给了所有对象
if (typeof Object.prototype.clone === "undefined") {
Object.prototype.clone = function () {};
}
Tags:高质量 JavaScript 代码
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接