为了账号安全,请及时绑定邮箱和手机立即绑定

关于jQuery异步执行的作用域的问题

$(function () {
                var intI = 0;
                $("div").bind("click", function () {
                    intI++;//很明显这是一个异步调用,我的疑问是,在设置完事件响应之后,intI随着函数$()里的这个匿名的退栈应该已经被销毁了啊,为什么在这里还能访问到呢?
                    $(this).css("font-size", intI + "px");
                })
            });


正在回答

1 回答

那以你的意思就是 $()执行完了之后 里面的全部内容都被销毁了咯

0 回复 有任何疑惑可以回复我~
#1

零零拾 提问者

也不能这么说 我的想法是,$()函数本身也是异步执行的 这样就可以保证所有的事件-响应绑定操作都是在DOM完全加载之后做的 那么$()里定义的那些变量肯定是随着$()的退栈被销毁了 而代码却被执行了 其实我的疑问就是,如果事件在$()函数退栈之后被触发(应该说这是肯定的) 那么intI是怎么被拿到的呢?
2015-12-09 回复 有任何疑惑可以回复我~
#2

木子舟义 回复 零零拾 提问者

作用域链中。 既然把相应的事件处理程序绑定到了 相应的元素上,函数被引用,函数内部还引用着外部的变量,作用域都还在,怎么销毁呢
2015-12-09 回复 有任何疑惑可以回复我~
#3

零零拾 提问者 回复 木子舟义

我猜没有这么简单吧 这个牵扯到函数式编程中的闭包吧 你觉得呢?
2015-12-09 回复 有任何疑惑可以回复我~
#4

木子舟义 回复 零零拾 提问者

既然你都提到闭包了,难道还不能理解?
2015-12-09 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
jQuery基础课程
  • 参与学习       154768    人
  • 解答问题       7184    个

加入课程学习,有效提高前端开发速度

进入课程

关于jQuery异步执行的作用域的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信