setInterval,setTimeout的用法

自定义一个函数:

1 function myFunc(){
2 //do somthing;
3  }
4
5  function myFunc2(data){
6 do something;
7 }

调用第一个函数这三种写法:

setInterval(myFunc,1000);

setInterval("myFunc()",1000);

第三种是匿名函数,也就是说不要自定义了:setInterval(function(){...;},1000);

而调用第二个函数显然第一种调用法就失效了,因为没法送参数,除非你把参数都默认了,不然只有在调用的时候把参数送进去:

setInterval("myfunc2('aaa')",1000);

假如参数是一个元素/对象的话呢?以jQuery为例:

setInterval("myfunc2($('#txtmsg'))",1000);

原生js当然一样:

setInterval("myFunc2(getElementById('txtmsg'))",1000);

====补充

经反复实验,如下用法均可行:

代码
1 <script type="text/javascript">
2 var a="3",b="4", c;
3 onload=function(){c=document.getElementById('t1').value;}
4 function getc(){return document.getElementById('t1').value;}
5 function test(a,b){alert(a+b);}
6 function test2(a){alert(a.value);}
7 // setTimeout(test(a,b),1000);
8   // setTimeout(test(3,"4"),1000);
9   // setTimeout("test(a,b)",1000);
10 // setTimeout("test(document.getElementById('t1').value,2)",1000);
11 // setTimeout(test(document.getElementById('t1').value,2),1000);//错误
12 //setTimeout("test(c,b)",1000);
13 // setTimeout(test(c,b),1000);//提示C未定义
14 // setTimeout(test(getc(),b),1000);//错误
15 // setTimeout("test(getc(),b)",1000);
16 // setTimeout("test2(document.getElementById('t1'))",1000);
17 //setTimeout(test2(document.getElementById('t1')),1000);//错误
18 </script>
可见,带了参数的调用方法很是灵活,而且用引号传递的话,会比直接传递函数对象适用范围广很多,

上例中,凡是出错的地方,全在传递对象的时候

原文地址:https://www.cnblogs.com/walkerwang/p/1729910.html