setTimeout传参

我们最先想到是这样:

setTimeout(doSomething1(123),1000);function doSomething1(content){console.log(content);
}

但是这样写,123立马打印出来,并没有等待1s。这是因为,这样写会直接调用doSomething1(123),然后将其返回的结果作为第一个参数运行setTimeout,分解开就是:

var temp = doSomething1(123);
setTimeout(temp,1000);

所以,既然temp是返回值,如果temp是一个函数那就达到我们的目的了,可以这样写:

 ssetTimeout(doSomething1(123),1000);//这样就可以了
function doSomething2(content){return function(){console.log(content);}
}

onclick传参

和上面道理一样,也是不能直接传参:

var box = document.getElementById("box");
box.addEventListener("click",doSomething1("123"))function doSomething1(content){console.log(content);}

修改如下就可以:

var box = document.getElementById("box");
box.addEventListener("click",doSomething2("123"))function doSomething2(content){return function(){console.log(content);}}

这样我们也理解了,为什么box.addEventListener("click",onClick())也不行,而只能是box.addEventListener("click",onClick)了。

然而,修改之后虽然可以传参了,但是返回的是一个匿名函数,也就是说,这个事件监听没有办法取消。所以,还是不要用传参比较好,可以使用全局变量。


总之,函数作为另一个函数的参数时,就要小心:是传入函数对象,而不是函数调用后的结果

从setTimeout,onclick传参看js函数作为参数相关推荐

  1. 动态html函数的写法,如何将html div id的动态传递给js函数

    我想将div id从html动态传递给js脚本 因为div id r1,r2,r3需要传入jS中的getElementById(),所以当用户鼠标放在任何div上,它会自动旋转.如何将html div ...

  2. JS函数的参数(arguments)的使用

    JS函数的参数在function内可以用arguments对象来获取. 参数的调用有两种方式: 1.期望参数的使用. 2.实际传递参数的使用. 应用举例: function Test(a, b){ v ...

  3. js函数中参数的传递

    先看一道JS的笔试题: var setObj=function(o){o.name="xiaoming";o={};o.name="xiaohong"; } v ...

  4. js函数 argements参数

    demo: function argTest(a,b,c,d){ var numargs = arguments.length; // 获取被传递参数的数值. var expargs = argTes ...

  5. js函数 传参 解密

    js 中的函数我们用了太多太多次了,但是关于函数的参数今天还是要说道说道. 1.js函数的参数分为两种,一种是显示参数,一种为隐式参数. 显示参数:在函数定义时列出 隐式参数:在函数调用时传递的参数值 ...

  6. HTML调用Java函数或语句,在动态THML语句中调用JS函数传递带空格参数的问题

    刚刚遇到一个问题,调用js函数的参数里带空格,造成调用失败的问题. 部分代码如下: html+=" "; //name中如果有空格就是调用失败 html+=" " ...

  7. idea中js函数中使用EL表达式报错expression expected以及参数underfined的问题.md

    EL表达式显示错误expression expected问题: ​ 这段代码在MyEclipse中没有问题,因为idea的严格代码检查,这里会显示expression expected的错误,原因是因 ...

  8. 前端:JS/22/函数(函数的概念,函数的定义格式,函数定义格式的说明,函数的调用,函数的参数),全局变量和局部变量,拷贝传值和引用传址,匿名函数,二维数组,对象,自定义对象的创建

    函数 1,函数的概念 函数,是将一段公共的代码进行封装,给它起个名字叫"函数" 函数可以一次定义,多次调用:函数可以将常用的功能代码,进行封装,如:用户名的验证,验证码函数,邮箱验 ...

  9. 礼拜五log~js函数setTimeout

    js函数setTimeout的用法 var tmpContent = "";setTimeout(function(){ // 回调函数tmpContent = $(". ...

最新文章

  1. 《信息安全技术健康医疗数据安全指南》国家标准
  2. ReSIProcate源码目录下功能说明
  3. util.promisify 的那些事儿
  4. plsq如何快捷整理代码_PLSQL Developer使用技巧整理(转)
  5. python绘制笑脸-用python绘图
  6. ViewPager的事件冲突的解决
  7. 格局打开,带你解锁 prompt 的花式用法
  8. [Leetcode]-- Valid Number
  9. 力扣441.排列硬币
  10. ubuntu 卸载opencv
  11. UART通讯协议(四)数据接收帧间隔
  12. 八、Oracle学习笔记:日期函数
  13. php 汽车品牌三级联动,车辆品牌型号的三级联动菜单怎么做的
  14. 【算法题】求有序数列中相邻数字之间的最大差值
  15. Windows 10系统时间显示不正确
  16. 大数据基础——Hadoop大数据平台搭建
  17. Hi-C数据可视化-组装角度
  18. 动易html在线编辑器 漏洞,动易NewComment.asp注入漏洞
  19. TeamViewer远程工具使用安装方法图解
  20. 基于python语言,使用爬虫和深度学习来预测双色球(二、模型训练与测试)

热门文章

  1. [maven] springboot将jar包打包到指定目录
  2. Sublime Text 3 、WebStorm配置实时刷新
  3. getLocationOnScreen不起作用原因
  4. js处理富文本编辑器转义、去除转义、去除HTML标签
  5. eclipse中git解决冲突
  6. 22 | 哈希算法(下):哈希算法在分布式系统中有哪些应用?
  7. 链表面试笔试题目总结
  8. [置顶] export命令-linux
  9. MySQL-5.7.21非图形化下载、安装、连接问题记录
  10. [iOS] 建立与使用Framework