唷!这是一个很长的头衔.
我正在为Web开发人员阅读WROX的专业JavaScript书籍,我看到了这个示例代码,我只是想知道这是否是最佳实践:
function convertToArray(nodes) {
array = new Array();
for (var i=0, len=nodes.length; i < len; i++) {
array.push(nodes[i]);
}
return array;
}
Run Code Online (Sandbox Code Playgroud)
让我摸不着头脑的是"len = nodes.length".我认为for循环中的第一句只运行一次是错误的吗?您是否有理由在运行之前将变量(len)设置为nodeList的长度?你会这样做到普通阵列吗?
谢谢
这是出于性能原因.由于以下几个原因,局部变量更快:
nodes是数组,则.length是一个魔术属性,可能需要比成员变量更长的时间来检索.nodes是ActiveX对象,则.length可能导致对对象的方法调用,因此这是所有操作中最昂贵的操作.