如何优化下面这段代码?

作者:dh20156 来源:w3cgroup 时间:2010-01-23 11:30:00 

DEMO:

var testobj = document.getElementById("test");
for(var i=0;i<testobj.childNodes.length;i++){
    var oText = testobj.childNodes[i].innerHTML;
    if(oText==""){
        alert("Item "+i+" is null");
    }
}

该例主要是看内存的分配,重点优化应该是将循环中的定义变量操作放到循环外,这样就不会重复分配内存空间;另外一些优化可以考虑递减循环操作,循环外定义变量i的值,如下:


var testobj = document.getElementById("test");
var oText = "";
var i = testobj.childNodes.length;
for(;i>-1;i--){
    oText = testobj.childNodes[i].innerHTML;
    if(oText==""){
        alert("Item "+i+" is null");
    }
}

M2说testobj.childNodes[i].childNodes比testobj.childNodes[i].innerHTML快,暂且不提;

月MM说,关键的问题是循环体内没有必要对oText重复初始化,而不是重复声明;因为for不是一个scope,对于js来说;但是对于其他一些语言如C或者Java显然是有区别的;

标签:循环,JavaScript,编程,代码优化
0
投稿

猜你喜欢

  • ImageMagick FAQ 问题摘要

    2008-10-21 13:14:00
  • 三大措施设置数据库安全 保障网站安全运营

    2008-11-28 14:41:00
  • JavaScript正则表达式的简单应用:高亮显示

    2008-07-20 12:46:00
  • Javascript优化五大原则

    2007-10-30 13:49:00
  • 如何防止页面中的敏感信息被提取

    2008-05-04 11:59:00
  • 利用location.hash实现跨域iframe自适应高宽

    2009-08-02 20:31:00
  • 页面重构应注意的repaint和reflow

    2011-03-31 17:11:00
  • 如何制作一个从Access数据库中读取记录的下拉菜单?

    2010-06-29 21:23:00
  • 逐步讲解向Access数据库上传且显示图片

    2008-11-28 16:51:00
  • 百度的图片轮换JS代码,支持FF

    2007-11-16 16:24:00
  • 如何把URL和邮件地址自动转换为超级链接?

    2009-11-02 20:22:00
  • MS SQL2000 数据库自动备份方法

    2010-07-22 19:52:00
  • windows server 2003+IIS6 出现 'ASP 不正常,因为执行请求

    2010-05-07 11:02:00
  • Oracle捕获问题SQL解决CPU过渡消耗

    2010-07-21 13:14:00
  • 编写SQL Server的扩展存储过程实例

    2009-01-20 15:45:00
  • Oracle7.X 回滚表空间数据文件误删除处理方法

    2010-07-28 12:54:00
  • 卓越网的配送服务让我很不满意

    2009-03-19 13:49:00
  • 怎样修改 MySQL数据库中的密码

    2008-11-27 15:35:00
  • sql ntext数据类型字符替换实现代码

    2011-09-30 11:08:00
  • 用户研究中的人物角色

    2010-02-08 12:15:00
  • asp之家 网络编程 m.aspxhome.com