window.setTimeout和window.setInterval不能延时调用
来源:互联网 发布:vb断点调试 编辑:程序博客网 时间:2024/06/05 05:24
无论是window.setTimeout 还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,
而在许多场合必需要带参数,如果企图使用以下语句来使hello函数延迟3 秒执行是不可行的:
window.setTimeout(hello(123),3000);
这将使hello函数立即执行,并将返回值作为调用句柄传递给setTimeout 函数,其结果并不是程序需要的。
而使用字符串形式可以达到想要的结果:
window.setTimeout("hello(123)",3000);
归之 就是函数要以字符串形式传进去
另外我们常常会遇到一种情况,setTimeout(code,millisec)中code包含形参。
例如:我们需要在1秒后向用户提示的信息存储于变量msg中,varmsg='1shaspassed!';
此时不论是直接执行
setTimeout(alert(msg),1000); //alert(msg)会被立即执行
还是
setTimeout(“alert(msg)”,1000); //系统报错msgisnotdefined(chrome)
都不能达到预期的目的,因为定时器会努力地将code转化为一个function对象,
第一个错例里定时器立即执行code希求返回一个function对象,结果扑了空;
第二个虽然成功封装出function对象,但是定时器在msg的可见域外执行code,所以msg得不到正确的传递
推荐的解决办法是使用匿名函数回调
varmsg='1shaspassed!';
setTimeout( function(){ alert(msg); },1000);
第一个参数传递了一个会调用所需语句的function对象,这样就解决了code带参的问题。
- window.setTimeout和window.setInterval不能延时调用
- window.setInterval和window.setTimeout
- window.setInterval和window.setTimeout
- window.setTimeout() 和 window.setInterval() 使用说明
- window.setTimeout() 和window.setInterval() 的区别
- window.setTimeout() 和window.setInterval() 使用说明
- 学习window.setTimeout()和window.setInterval()
- window.setTimeout() 和window.setInterval() 的区别
- window.setTimeout() 和window.setInterval() 的区别
- window.setTimeout() 和 window.setInterval() 使用说明
- Window.setTimeout()与setInterval( )
- bom-window-setInterval()和setTimeout()的区别
- Javascript中window.setInterval和window.setTimeout的区别
- javascript中window.setInterval和window.setTimeout区别
- Jscript中window.setInterval和window.setTimeout的区别
- JS中window.setInterval和window.setTimeout的区别
- window.setTimeout() 和window.setInterval() 的用法与区别
- Js_window.setInterval & window.setTimeout
- OpenGL+VS2013+WIN7(64)配置
- 漫谈事务与分布式事务(4)- 最终一致性
- 黎姿双胞胎女儿周岁庆生 举家庆祝模样曝光(图)娱乐八卦天涯论坛
- python自定义函数(一)
- EM算法
- window.setTimeout和window.setInterval不能延时调用
- 机器学习入门:线性回归及梯度下降
- 分布式中 CAP BASE ACID 理解
- 单例模式随记
- C++实现二分查找(递归方法和非递归方法)
- mysql导出select结果到文件
- 安卓应用+服务端应用 开发
- How to move RAC Database ORACLE_HOME from one location to another one (Doc ID 1438719.1)
- Ubuntu由于修改etc/profile文件导致开机无法登陆问题解决办法(仅供参考)