Javascript事件绑定的一个坑
来源:互联网 发布:天音采集软件 编辑:程序博客网 时间:2024/06/02 06:53
JS支持在函数内定义函数,内部函数可以访问外部函数的局部变量,但访问时机的不同,会导致结果的不同
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script> <script type="application/javascript">$(document).ready(function () { var level = 0; for (var i = 0; i < $("#tab").children.length; i++){ if (level == 0){ $("#row" + i).on("click", function () { $(this).children().eq(0).text("" + i); }); }else if (level == 1){ $("#row"+i).on("click", i, function (event) { $(this).children().eq(0).text(""+event.data); }); } }}); </script></head><body><table id="tab"> <tr id="row0"><td>row0</td></tr> <tr id="row1"><td>row1</td></tr></table></body></html>
鼠标点击表格前,页面是这样的
level==0 时,内部函数定义没有绑定i的值,执行时从闭包获取i为2
level==1时,内部函数定义时绑定了i的值,执行时不从闭包获取值
JavaScript的函数是第一类对象,所以函数的定义也是可以在运行时进行的,这就造成函数的定义和函数的运行很可能在时间上有间隔,定义时闭包等上下文信息在执行时可能已发生变化。
另外,大家可以看看这篇文章的典型误区一节,可以加深理解
阅读全文
0 0
- Javascript事件绑定的一个坑
- javascript事件的绑定
- javascript的事件绑定
- javascript事件的绑定
- JavaScript事件的绑定
- 关于JavaScript的事件绑定
- 关于javascript的事件绑定
- javascript 给一个对象绑定事件
- Jquery中的事件与传统的javascript中事件区别: Jquery中事件允许绑定多个函数,而javascript中一个事件只能绑定一个函数.
- Acticle 6:javascript事件:事件的绑定
- javascript开发: JavaScript事件绑定的方法
- 谈谈javascript事件绑定和Prototype的事件绑定
- jQuery事件绑定和JavaScript原生事件绑定的区别
- JavaScript一个通用于代理和不代理的绑定事件函数
- javascript 中四种绑定事件的方法
- JavaScript事件绑定的方法说明
- JavaScript事件绑定的方法说明
- JavaScript事件绑定的方法说明
- Python Flask(四) Integration with the Python Shell
- 360度无死角深入剖析ArrayList
- 设计模式---模板方法模式
- Python Flask(五) Email
- NOIP集训Week 5总结
- Javascript事件绑定的一个坑
- 哈希值和地址值得区别
- Java集合面试问题
- C语言——【复习提纲】1.数据类型
- selenium自动化学习之弹出框
- 基于UDP的socket编程
- Python Flask 6.0.1 工厂函数
- 求出不超过n的幸运数
- Python Flask 6.0.2 相对路径