为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout第一个参数不加引号造成内存溢出

setTimeout第一个参数不加引号造成内存溢出

aluckdog 2019-03-13 17:19:01
网页显示在线时间:`    var timeblc = document.getElementById('nowtime');    var weekdays = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];    function addZero(t){        if(t<10) return '0'+t;        return t;    }    function showTime(){        var time = new Date();        var t = time.getFullYear()+'年'+getMonthDay(time)+getWeekday(time)+getHMS(time);        timeblc.innerHTML = t;        setTimeout('showTime()',1000);      //这里!!    }    function getMonthDay(time){        var m = addZero(time.getMonth()+1);        var d = addZero(time.getDate());        var str = m+'月'+d+'日';        return str;    }    function getWeekday(time){        var str = weekdays[time.getDay()];        return str;    }    function getHMS(time){        var h = addZero(time.getHours());        var m = addZero(time.getMinutes());        var s = addZero(time.getSeconds());        var str = h+':'+m+':'+s;        return str;    }    showTime();`代码注释处,第一个参数若不添加引号则引发内存溢出:网上查过,可知加引号则会在全局内寻找,不加则是在局部变量寻找,然而没找到有关溢出和查询变量方式的关系。求教!
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

setTimeout第一个参数应该传入的是即将执行的函数

setTimeout(showTime, 1000);


查看完整回答
反对 回复 2019-04-11
?
HUH函数

TA贡献1836条经验 获得超4个赞

没加引号就直接执行函数showTime了……造成递归死循环,setTimeout函数调用写法有:

  1. setTimeout(fn, timeout)

  2. setTimeout('fn()', timeout)


查看完整回答
反对 回复 2019-04-11
  • 2 回答
  • 0 关注
  • 746 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信