Javascript函数调用,参数传递,闭包和作用域实例分析
来源:互联网 发布:ios 读取网页数据 编辑:程序博客网 时间:2024/06/06 13:58
在某个群里看到一张图,有人问了一个问题,为何进界面点击事件会触发,暂且抛开这个问题,看下这段代码
首先,showDeferentAddress这个函数没有传参,
没有参数传递进来,该函数在执行时会沿着作用域链向上查找该变量,直到顶层,客户端中就是window,这样以来,这个函数只能在存在数组longitudes,latitudes,codes,lables的上下文中调用,否则会找不到数组变量。
其中使用了百度地图jsApi,其中point是经纬度对象,Label是文字标签,map是BMap对象,同样道理,map对象也需要在上下文中存在。
然后是addEventListener中的传递的函数问题,函数名后面带圆括号,意味着这个函数开始执行,而传递进addEventListener的是getLowAddress的返回值,如果没有return,则是undefined。也就是说,在遍历的过程中绑定事件的时候,getLowAddress函数已经开始执行了,而绑定的事件要么是该函数的返回值,要么是undefined,自然没法通过click触发。
然后是闭包问题,通过匿名函数触发带参函数,可以这么写,
label.point = point; label.index = i; label.addEventListener('click', function(){ getLowAddress(codes[this.index], this.point); });
当然也可以使用bind方法,传递非匿名的带参函数,
label.addEventListener('click', getLowAddress.bind(this(或者getLowAddress), codes[i], point));
阅读全文
0 0
- Javascript函数调用,参数传递,闭包和作用域实例分析
- javascript闭包,作用域,自调用匿名函数
- Javascript 的词法作用域、调用对象和闭包
- 函数的概念、定义、调用、参数传递、作用域
- 【JavaScript】函数的参数传递和递归调用
- javascript闭包和函数块作用域
- javascript浏览器窗口传递参数实例分析
- JavaScript函数作用域及闭包
- javascript函数作用域与闭包
- JavaScript函数,作用域以及闭包
- 实例分析 JavaScript 作用域
- JavaScript-函数的调用,无参函数和有参函数,参数的的传递
- JavaScript 精粹 基础 进阶(7)函数和作用域(闭包、作用域)
- javascript 函数和作用域(闭包、作用域)(七)
- javascript 函数和作用域(闭包、作用域)(七)
- javascript 函数和作用域(闭包、作用域)(七)
- JavaScript作用域、上下文环境、函数对象的定义与调用、匿名函数的定义与调用、闭包
- JavaScript函数调用时的作用域链和调用对象是如何形成的及与闭包的关系
- JAVA文件复制小程序
- angularJs自定义指令的scope配置详解
- 预加重/去加重/直流滤波
- 数据库中间件TDDL调研笔记
- Android学习笔记之Broadcast Receiver
- Javascript函数调用,参数传递,闭包和作用域实例分析
- IDEA 2017 2.2常见的编译错误以及解决办法
- Kotlin 语言高级安卓开发入门
- Hive分区修复命令MSCK介绍与使用
- ZooKeeper典型应用场景一览
- 款提升效率的chrome插件,好用到没朋友
- Android文本保存成PDF格式
- SAP ABAP 常用事务码
- C++经典问题解析之二