大佬教程收集整理的这篇文章主要介绍了jQuery匿名函数变量范围,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
function displayResults(data) { $("#odNextPage").click(function() { alert(data.queryTypE); // "undefined" return false; }); }
为什么我可以在单击匿名函数中使用数据对象?
编辑:queryType属性实际上没有设置我认为导致问题,抱歉.考虑到click函数是在数据对象范围之外执行的,我仍然有兴趣解释为什么它现在可以工作.
data = { /* interesTing things */ }; displayResults(data); delete data.queryType; // Time passes and then your callBACk gets called // but data.queryType is undefined.
我不知道你的情况的确切情况,但上面总结了可能发生的情况.
当你对数据产生闭包时,你会抓住数据,但这并不意味着你已经锁定了内部数据.
既然我们知道数据来自哪里以及为什么它首先被破坏了,我们就可以考虑为什么当数据正确并且不管它时它是如何工作的.
当您创建匿名回调函数时:
function() { alert(data.queryTypE); return false; }
你正在创建一个闭包,它保持对数据的引用(或者更准确地说,指向哪些数据),并且在没有人引用数据之前,数据不会被终止.变量的生命周期取决于其范围;您的数据变量存在于displayResults函数中.但是变量只引用(或指向)内存中的对象,并且该对象或多或少地会一直存在,直到没有人再引用它为止.
变量名称和被命名的对象是具有不同生命周期的独立实体.引用李小龙的话:
即使它们不被称为指针,你也无法摆脱编程中的指针.
以上是大佬教程为你收集整理的jQuery匿名函数变量范围全部内容,希望文章能够帮你解决jQuery匿名函数变量范围所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。