`
microbone
  • 浏览: 16992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript写的一段代码特占内存

阅读更多

大家都运行下,下面的javascript脚本运行的时候特占内存,提提建议?

time.js如下:

var montharray = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
document.write("<span id=clock></span>");
function getthedate(){
    var date = new Date();
 
 var year = date.getYear()
    if (year < 1000)
        year += 1900
 var month=date.getMonth();
 var day=date.getDate();
 var hours=date.getHours();
 var minutes=date.getMinutes();
  var second = date.getSeconds();
 
 var timevalue="&nbsp;"+year+"年";
 
 timevalue+=montharray[month]+"月";
 timevalue+=((day<10)?("0"+day):day)+"日&nbsp;&nbsp;";
 
 timevalue+=(hours<13)?("上午&nbsp;"+hours):("下午&nbsp;"+(hours-12))+"时";
 
 timevalue+=((minutes<10)?("0"+minutes):minutes)+"分";
 timevalue+=((second<10)?("0"+second):second)+"秒";


    document.getElementById("clock").innerHTML = timevalue;
    window.setInterval("getthedate()", 1000);
}

getthedate();

 

 

html如下:

  <body>
  <script src="time.js"></script>
   </body>

分享到:
评论
11 楼 zy_pub 2010-02-03  
eyunfeis 写道
window.setInterval("getthedate()", 1000);
惹的祸,getthedate函数里请使用window.setTimeout("getthedate()",1000);


10 楼 jiasongmao 2010-02-01  
bluemeteor 写道
楼上说的都对,但是都没有仔细看楼主代码背后的需求

“一个简单的例子,在网页上某个位置显示当前时间,并且每秒更新”

从需求看,用setInterval是没有问题的。

楼主你的问题在于window.setInterval("getthedate()", 1000);这个语句的调用位置。用setInterval没错,但是不应该放到getthedate函数里面,而是应该放到onload函数或者某个按钮的onclick中都可以。

现在你的程序会导致,每一秒之后,客户端中就多了一个新的timer,因为你的setInterval就在定时函数中声明,这个有点像无限递归的意思。

把setInterval只需定义一次。把你最后的getthedate()替换为window.setInterval("getthedate()", 1000);
同时删除getthedate方法内部的setInterval





正解!!!
9 楼 aoliwen521 2010-02-01  
正解已经出现
8 楼 langhua9527 2010-02-01  
setTimeout()是到某一个时刻开始执行,只执行一次
而setInterval()是每隔一个时间段执行一次,执行多次,相当于定时器
7 楼 hoby_yyy 2010-02-01  
上面两种修改方法都对。
1,将setInterval() 替换成 settimeout();
或者
2,将setInterval() 的执行从function中拿出来;也可以。

楼主现在的代码会无穷次的增加 function 的执行次数。
6 楼 liu78778 2010-02-01  
bluemeteor 写道
楼上说的都对,但是都没有仔细看楼主代码背后的需求

“一个简单的例子,在网页上某个位置显示当前时间,并且每秒更新”

从需求看,用setInterval是没有问题的。

楼主你的问题在于window.setInterval("getthedate()", 1000);这个语句的调用位置。用setInterval没错,但是不应该放到getthedate函数里面,而是应该放到onload函数或者某个按钮的onclick中都可以。

现在你的程序会导致,每一秒之后,客户端中就多了一个新的timer,因为你的setInterval就在定时函数中声明,这个有点像无限递归的意思。

把setInterval只需定义一次。把你最后的getthedate()替换为window.setInterval("getthedate()", 1000);
同时删除getthedate方法内部的setInterval




对的,你得分清用setTimeout和setIntervale的区别

现在的setIntervale的位置换成setTimeout就对了

还有的是, 你用+=对字符串操作也很多, 建议使用array.join来一次性拼装
5 楼 binlaniua 2010-01-31  
setInterval(function(){
  //你的代码....
},1000)
4 楼 bluemeteor 2010-01-31  
楼上说的都对,但是都没有仔细看楼主代码背后的需求

“一个简单的例子,在网页上某个位置显示当前时间,并且每秒更新”

从需求看,用setInterval是没有问题的。

楼主你的问题在于window.setInterval("getthedate()", 1000);这个语句的调用位置。用setInterval没错,但是不应该放到getthedate函数里面,而是应该放到onload函数或者某个按钮的onclick中都可以。

现在你的程序会导致,每一秒之后,客户端中就多了一个新的timer,因为你的setInterval就在定时函数中声明,这个有点像无限递归的意思。

把setInterval只需定义一次。把你最后的getthedate()替换为window.setInterval("getthedate()", 1000);
同时删除getthedate方法内部的setInterval


3 楼 containsoft 2010-01-31  
setTimeout()在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次
而setInterval()则不一样,它从载入后,每隔指定的时间就执行一次表达式
2 楼 microbone 2010-01-31  
对,就是这么回事!
1 楼 eyunfeis 2010-01-30  
window.setInterval("getthedate()", 1000);
惹的祸,getthedate函数里请使用window.setTimeout("getthedate()",1000);

相关推荐

    超实用的javascript代码段 源码

    "超实用的javascript代码段"是席新亮著作的一个资源集合,提供了许多实际开发中常用且高效的代码片段,对于学习和提升JavaScript编程技能非常有帮助。 一、基础语法与类型 JavaScript的基础语法包括变量声明(var、...

    超实用的JavaScript代码段.pdf

    这篇“超实用的JavaScript代码段”文档很可能包含了许多常用的、实用的JavaScript函数和技巧,可以帮助开发者提高效率,解决实际问题。 首先,JavaScript的基础知识包括变量声明(var、let、const)、数据类型...

    272个超酷经典JavaScript代码

    10. **性能优化**:如避免内存泄漏、减少DOM操作、利用事件委托等,都是提高JavaScript代码性能的关键技巧。 11. **动画与定时器**:setTimeout和setInterval可用于实现定时任务,而requestAnimationFrame则常用于...

    测试JavaScript在IE中的内存泄露

    JavaScript是一种广泛应用于Web开发的脚本语言,它在运行时动态分配和释放内存。然而,在某些情况下,尤其是在老版本的Internet Explorer(IE)浏览器中,可能会出现内存泄露问题。内存泄露是指程序在申请内存后,...

    Canvasgame一段代码

    在这个"Canvasgame一段代码"的问题中,我们可能面临的是一个关于Canvas游戏编程的特定问题,可能涉及到动画渲染、碰撞检测、用户交互等技术。 首先,Canvas API提供了大量的绘图方法,如`fillRect()`用于填充矩形,...

    JavaScript引擎工作原理

    JavaScript能够将动态文本放入HTML,例如,在HTML页面中,可以通过JavaScript向用户显示一段动态的文本。 JavaScript引擎是浏览器的核心组件之一,它的主要任务是解析JavaScript代码,并执行代码,然后将结果展示给...

    JAVASCRIPT实现的CPU内存监控

    记录一段时间内的`performance.now()`值,然后通过差分计算出执行时间。通过比较不同时间间隔的执行时间,可以估计CPU负载。 4. **内存分析**: 虽然`performance.memory`提供了内存使用情况,但JavaScript本身...

    内存javascript脚本

    2. **定位问题代码**:找出可能导致内存泄漏的代码段,例如忘记清理的事件监听器。 3. **修复并验证**:修改问题代码,再次进行性能测试确保问题得到解决。 ### 总结 通过上述讨论,我们可以看出合理管理内存对于...

    14-编译器和解释器:V8是如何执行一段JavaScript代码的?_For_vip_user_0011

    当V8接收到JavaScript源代码时,首先进行词法分析,将源代码分解成一个个有意义的符号或词法单元,如变量名、关键字、运算符等。接着是语法分析,将词法单元组织成符合语言规则的抽象语法树(AST)。AST是一个树形...

    Javascript解释器在ECMAScript中运行Javascript代码

    当我们在浏览器中加载一个包含JavaScript的网页时,浏览器中的JavaScript引擎(如Chrome的V8引擎)会接收到源代码。这个引擎包含一个JavaScript解释器,它的主要任务是解析和执行这些代码。 1. **词法分析(Lexical...

    Java Script 经典教程(五)——JavaScript几段特效

    在"Java Script 经典教程(五)——JavaScript几段特效"中,我们将深入探讨如何利用JavaScript为网页添加各种动态效果,提升用户体验。 1. **DOM操作**:DOM(Document Object Model)是HTML或XML文档的结构化表示...

    跟踪网页特效是执行的哪段javascript代码(chrome谷歌浏览器,firefox火狐浏览器).zip

    在网页开发中,JavaScript是一种至关重要的编程语言,用于实现丰富的用户交互和动态效果。当我们想要追踪网页特效的执行,理解JavaScript代码的工作原理是关键。在Chrome谷歌浏览器和Firefox火狐浏览器中,我们可以...

    【JavaScript源代码】NodeJs内存占用过高的排查实战记录.docx

    - **生成堆快照**:为诊断内存泄漏,使用`heapdump`模块生成了服务启动初期及运行一段时间后的堆快照。然而,通过对快照的初步分析,并未能直接定位到引起内存泄漏的具体代码或对象。 - **审查代码**:鉴于项目规模...

    javascript dom 代码

    - **使用文档片段**:大量插入或删除节点时,先在内存中创建文档片段,然后一次性插入,以提高效率。 - **事件委托**:在共同父元素上绑定事件,根据事件目标判断处理逻辑,减少事件监听器的数量。 总的来说,...

    javascript经典特效---原始的js炸弹.rar

    1. **无限循环**:JavaScript中的while、for等循环结构如果设置不当,可能会导致程序陷入无限循环,不断地执行同一段代码,从而消耗大量的CPU资源。例如,一个简单的`while(true) {}`就会使浏览器无休止地运行。 2....

    jsmeter是一种测量JavaScript代码的执行时间CPURAM和堆的性能工具

    js-meter就是这样一个工具,它专为开发者设计,用于测量JavaScript代码在运行时的性能,具体包括执行时间、CPU使用率、内存消耗(RAM)以及堆内存状况。 **执行时间测量** 执行时间是衡量代码效率的重要指标,js-...

    超全的javascript应用小程序

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在创建交互式用户界面方面表现出色。"超全的javascript应用小程序"这个主题涵盖了JavaScript在开发小型应用程序和功能时的各种技巧和方法,旨在帮助开发者...

    JavaScript 语言在引擎级别的执行过程--周爱民

    这个阶段,JavaScript引擎会将源代码转化为抽象语法树(AST,Abstract Syntax Tree),这是一个结构化的表示,便于后续处理。例如,V8引擎,Google Chrome的JavaScript引擎,使用了一种名为“词法分析”的快速方法来...

    让IE假死掉的一段代码-有思路和原理

    标题中的“让IE假死掉的一段代码-有思路和原理”揭示了本文将探讨一个特定的编程片段,这段代码能够在Internet Explorer(IE)浏览器上引发性能问题,导致浏览器无响应,也就是我们常说的“假死”状态。这种现象通常...

    Google V8学习手记,月javascript写服务器端是多少人的梦醒呀,Google v8让javascript和php一样

    这段代码展示了如何创建一个 V8 引擎实例、设置上下文,并执行一段简单的 JavaScript 代码来输出 “Hello, World!”。 ##### 2.3 在 C++ 中访问 JavaScript 的变量及函数 在 V8 中,可以从 C++ 访问 JavaScript ...

Global site tag (gtag.js) - Google Analytics