/*
* 先从正常的延时执行说起,以下代码会在2s后弹出true,OK
*/
- function st(){
- alert(true);
- }
- setTimeout(st, 2000);
/*
* 下面的代码也会弹出true,但不OK,因为延时没有起作用
*/
- function st(arg){
- alert(arg);
- }
- setTimeout(st(true), 2000);
/*
* 解决方法之一,这种方法可以应付参数为字符串型的,对object型就不OK了
*/
- function st(arg){
- alert(arg);
- }
- setTimeout(‘st(‘+ true +’)’, 2000);
/*
* 解决方法之二,可以利用闭包
*/
- function st(arg){
- return function(){alert(arg);}
- }
- var st1 = st(true);
- setTimeout(st1, 2000);
/*
* 解决方法之三,可以重载 window.setTimeout 函数,代码转载有修改,这里也有用到闭包的概念
*/
- var _st = window.setTimeout;
- window.setTimeout = function(fRef, mDelay){
- if(typeof fRef == ‘function’){
- var argu = Array.prototype.slice.call(arguments,2);
- var f = function(){
- fRef.apply(null, argu);
- };
- return _st(f, mDelay);
- }
- return _st(fRef,mDelay);
- }
- function st(arg){
- alert(arg);
- }
- setTimeout(st, 2000, true);
版权声明:本文为qq_40981281原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。