setTimeOut() 传递参数: /* * 先从正常的延时执行说起,以下代码会在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); /* * 解决方法之二,可以利用闭包([b][color=red]**[/color][/b]简单实用,强烈推荐!) */ 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);