setTimeout传参[通俗易懂]

setTimeout传参

大家好,又见面了,我是全栈君。

unction test(s)
{
    alert(s);
}
window.setTimeout(function(){test('str');},1000);

这样就可以了…
为什么是这样呢.
因为setTimeout要求的第一个参数是函数…比如setTimeout(a_fun,1000)这样是可以的,a_fun是一个函数.
但是setTimeout(a_fun(),1000);这样就不行了.因为这里a_fun()其实是函数的返回值了…这样讲应该能明白了.
另外,不推荐网上有人用的方法setTimeout(‘test(1)’,1000);这样的形式,因为这个有很多情况下是不实用的.
如果实在要用这种方法,只能这样:setTimeout(“test(‘”+param+”‘)”,100);这种方式。

还有一种方法:

function timeClick(obj)  
       {  
        //   var obj=document.getElementById('');  
           obj.style.backgroundColor="gray";  
           obj.onclick=function(){ return false;};  
           setTimeout(function(){resetbgColor(obj);},3000);  
       }  
         
       function resetbgColor(obj)  
       {  
         //  var obj=document.getElementById('');  
           obj.style.backgroundColor="";  
        //   $('#'+'').click(timeClick);  
      //  debugger;  
           obj.οnclick=function(){  
               timeClick(this);  
           };  
       }  

我发现这句还真是万能啊,太服了, function(){ method(param);} 

          这里两个地方都用到了,解决了我的所有问题,1.setTimeout传参数 2.动态设置onclick事件 

         setTimeout(function(){resetbgColor(obj);},3000); 

          obj.οnclick=function(){ 
                timeClick(this); 
            };

还有一种方法:

<script language="JavaScript" type="text/javascript">
<!--
var userName="jack";
//根据用户名显示欢迎信息
function hello(_name){
       alert("hello,"+_name);
}
//创建一个函数,用于返回一个无参数函数
function _hello(_name){
       return function(){
             hello(_name);
       }
}
window.setTimeout(_hello(userName),3000);
//-->
</script>

这 里定义了一个函数_hello,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。在 window.setTimeout函数中,使用_hello(userName)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108556.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • netty权威指南学习

    netty权威指南学习1、Bio工程结构maven工程文件结构:│nettyArticle.iml│pom.xml│├─.idea│compiler.xml│misc.xml│vcs.xml│workspace.xml│├─src│├─main││├─java│││└─com│││└─jad…

    2022年10月2日
    0
  • ODRIVE(led灯闪烁故障解决方法)

    故障排除文章目录故障排除错误代码常见的Axis错误常见的Motor错误常见的Encoder错误常见的Controller错误USB连接问题固件问题执行`make`时无法构建固件运行`makeflash`时无法烧录固件其他可能不会产生错误代码的问题电机在高速旋转时会中断或失控(ie:>5000RPM)静止时电机振动或发出噪音电机位置控制出现过冲或在目标位置震荡电机开…

    2022年4月10日
    262
  • mysql更改表名语句命令

    mysql更改表名语句命令renametabletablename1totablename2;

    2022年6月1日
    30
  • AndroidStudio-断点调试-让你的调试更有效率

    AndroidStudio-断点调试-让你的调试更有效率前言:上篇博客AndroidStudio-断点调试-也许你该知道断点调试是有多么的美好,记录了AndroidStudio上断点调试的基本流程和debug面板按钮介绍.这一篇就给大家分享一点调试的小技巧,让我们的代码调试变得更有效率.你可以选择随时进入调试模式一般我们都是点击绿色小昆虫进入调试模式进行调试,其实还可以有另外一种方法.看下面的面板截图,有没有发现有两个小昆虫图标.图标E

    2022年5月21日
    58
  • pycharm2022.01.13怎么激活_在线激活[通俗易懂]

    (pycharm2022.01.13怎么激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1PA3AFINM4-eyJsaWNlb…

    2022年3月31日
    62
  • 请注意,面试中有这7个行为肯定会被拒绝!

    请注意,面试中有这7个行为肯定会被拒绝!

    2022年2月14日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号