JS中把函数作为另一函数的参数传递方法(总结)


Posted in Javascript onJune 28, 2017

今天在给元素注册事件的时候,使用addEventListener遇到了一个问题,这个好像之前也遇到过,觉得有必要总结一下,就是js函数作为参数引发的问题。首先看以下代码,觉得下面代码有问题吗?是否能达到点击id3对应的元素后,弹出id3呢?

例1

var obj3=document.getElementById('id3'); 
obj3.addEventListener('click',curClick('id1'),true); 
function curClick(id){ 
    alert(id); 
}

答案是否定,不能达到我想要的效果,因为这行代码在页面加载完成时候,就会弹出id3。当我单击id3对应的元素时候,页面没有任何反应。

于是我将代码改为如下两种情况:

例2

var obj3=document.getElementById('id3'); 
  obj3.addEventListener('click',function(e){curClick('id3');stopPropagation(e)},true); 
 
  function curClick(id){ 
    alert(id); 
  }

例3

var obj1=document.getElementById('id1');  
obj1.addEventListener('click',curClick1,true); 
function curClick1(){ 
 alert('okey'); 
}

这次执行正常了,这是为什么呢?

因为在JS世界里curClick('id3')就是直接调用curClick('id3'),而非将其作为一个参数来传递,如果要将其作为一个参数来传递,如果不需要传递参数,直接传递函数名就可,如果需要传递参数,有两种解决办法

方法一:借助匿名函数,将要传递的函数,放在匿名函数中,将匿名函数作为参数如例2

eg:将function(){myfunction(val1,val2,......);}作为参数传递。

第二:改写需要传递函数

function curClick1(val){ 
<span style="white-space:pre">  </span>return function(){ 
    alert(val); 
  }; 
}

以上这篇JS中把函数作为另一函数的参数传递方法(总结)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 数字转换研究总结
Dec 26 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
switch语句的妙用(必看篇)
Oct 03 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 Javascript
JavaScript实现数值自动增加动画
Dec 28 Javascript
vue.js内置组件之keep-alive组件使用
Jul 10 Javascript
vue使用echarts画组织结构图
Feb 06 Vue.js
js+html制作简单日历的方法
Jun 27 #Javascript
ionic环境配置及问题详解
Jun 27 #Javascript
微信小程序 密码输入(源码下载)
Jun 27 #Javascript
Javascript实现base64的加密解密方法示例
Jun 27 #Javascript
微信小程序 空白页重定向解决办法
Jun 27 #Javascript
ionic 自定义弹框效果
Jun 27 #Javascript
js脚本编写简单刷票投票系统
Jun 27 #Javascript
You might like
elgg 获取文件图标地址的方法
2010/03/20 PHP
PHP 事务处理数据实现代码
2010/05/13 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
js浮动图片的动态效果
2013/07/10 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Django封装交互接口代码
2020/07/12 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
自荐信格式范文
2013/10/07 职场文书
初一体育教学反思
2014/01/29 职场文书
十八大感想感言
2014/02/10 职场文书
行政部岗位职责范本
2014/03/13 职场文书
售后服务承诺书模板
2014/05/21 职场文书
办公室主任岗位职责
2015/01/31 职场文书
七一活动主持词
2015/06/29 职场文书
如何使用SQL Server语句创建表
2022/04/12 SQL Server
浅谈Node的内存泄露问题
2022/05/06 NodeJs