javascript自启动功能问题的探讨

javascript自启动功能问题的探讨
我不多说。

先看看代码的两部分:
复制代码代码如下所示:
VaR elems = document.getelementsbytagname(A);

对于(var i = 0;i < elems.length;i++){

警报(一);
艾丽美{我}。addEventListener(听到咔哒声,功能(e){
E.preventDefault();
警报(我链接# +我);
},假);
}

再看一面:
复制代码代码如下所示:
VaR elems = document.getelementsbytagname(A);

对于(var i = 0;i < elems.length;i++){

函数(索引){)
艾丽美{我}。addEventListener(听到咔哒声,功能(e){
E.preventDefault();
警报(我链接# +指数);
},假);
})(一);
}

HTML代码如下所示:
复制代码代码如下所示:









你可以想象下一段脚本代码的效果。

如果你能看到效果之间的区别,那就恭喜你吧。至少我想了很久,才明白了神秘。

是的,你没有错,这是第一段代码,不管你点击哪个链接,输出是我链接8。#

代码的第二部分是您真正想要的结果,那么为什么呢。

请看下面的代码:
复制代码代码如下所示:
VaR elems = document.getelementsbytagname(A);

对于(var i = 0;i < elems.length;i++){

警报(一);
艾丽美{我}。addEventListener(听到咔哒声,功能(e){
E.preventDefault();
警报(我链接# +我);
只有当触发器开始时,请在这里再加一个回调函数。
在这里,我的价值在同一时间结束循环的变化。
},假);

原因
虽然elems {我}是 / /元素引用在这里
但是在结束后,i中的回调函数一直处于循环状态。
8(elems / /如果长度是8字)
}

复制代码代码如下所示:
VaR elems = document.getelementsbytagname(A);

对于(var i = 0;i < elems.length;i++){

(函数(索引){)
艾丽美{我}。addEventListener(听到咔哒声,功能(e){
E.preventDefault();
警报(我链接# +指数);
},假);
})(一);
但这里不一样。
虽然循环结束后的i 值为8
但在O/内的索引包中,封闭已经真正锁定了现场。
已存储在内存中。
确切地说,锁在内存中的功能。

}

可能有一些Javascript闭包的知识。

上面的代码,想了很久,记录下来,以防遗忘。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部