数码资讯
关于Javascript闭包和事件的循环绑定的示例讨论
今天,您看到一个Javascript标题,按照正常循环绑定事件,但结果不需要。 复制代码代码如下所示: 文本 链接 var = document.getelementsbytagname(A); 对于(var i = as.length;我--;){ 为{我}。onclick =函数(){ 警报(一
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
今天,您看到一个Javascript标题,按照正常循环绑定事件,但结果不需要。
复制代码代码如下所示:
文本
链接
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
为{我}。onclick =函数(){
警报(一);
返回false;
}
}
1。这个代码点击链接i - 1,为什么会这样
是一个简单的变量范围的功能,如果功能(警戒){(i);return false;}作为一个功能的一个(一);(我)内部变量未定义,但内部使用,所以向外搜索,发现在我的循环定义,循环执行启动后单击事件后,对价值的执行结束后我已经变成1;所以每次弹出的是- 1;
for循环的2.2个参数并不常见!怀疑吗
对于(语句1,语句2,语句3){
}
对于循环条件
通常说语句1、语句2和语句3都是可选的。
b.报表2:
通常,语句2用于评估初始变量的条件。
语句2也是可选的。
如果语句2返回true,循环再次启动,如果返回false,循环将结束。
提示:如果省略语句2,则必须在循环中提供中断。否则循环不能停止。这可能导致浏览器崩溃。
C.关于我——判断:
当我判断--是真/假时,它是第一个判断我,然后是我——当谈到我的最终判断时,当我实际上判断= = 0时,判断再次执行,for循环终止,所以i的值变成1;
var I=1;
!!!我
uff1a解
复制代码代码如下所示:
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
(函数(i){)
为{我}。onclick =函数(){
警报(一);
返回false;
}
})(一)
}
或:
复制代码代码如下所示:
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
var =函数(i){
为{我}。onclick =函数(){
警报(一);
返回false;
}
}
A(I);
}
其他互联网用户7在解决方案演示:
复制代码代码如下所示:
关闭演示
函数init(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick =函数(){
警报(一);
}
}
}
产品1
产品两
产品三
产品四
产品五
1,将变量i保存到每个段落对象(p)
复制代码代码如下所示:
函数init(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
人{我}我=我;
我祈祷{ }。onclick =函数(){
警戒(这一);
}
}
}
2。从变量i保存匿名函数本身
复制代码代码如下所示:
功能init2(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(人{我}。onclick =函数(){()
警报(参数。被叫。我);
})i = i;
}
}
3,用一层闭包,以函数参数的形式传递给内部函数。
复制代码代码如下所示:
功能init3(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(函数)
我祈祷{ }。onclick =函数(){
警报(精氨酸);
};
})(i);调用参数
}
}
4,用一层闭包,以局部变量的形式传递给内存函数。
复制代码代码如下所示:
功能init4(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(函数(){())
var
我祈祷{ }。onclick =函数(){
警报(临时);
}
});
}
}
5,添加一层闭包并作为响应事件返回函数(注意与3的细微差别)
复制代码代码如下所示:
功能init5(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick=功能(arg){
返回(函数)返回函数
警报(精氨酸);
}
}(一);
}
}
6。事实上,函数实现时,函数的每个实例都会产生闭包。
复制代码代码如下所示:
功能init6(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick =新功能(警报(+我+);); / /新产生一个函数实例一
}
}
7。用功能实现,注意与6的区别
复制代码代码如下所示:
功能init7(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick=功能('alert(+我+ ')')
}
}
完整的总结,欢迎拍砖!
复制代码代码如下所示:
文本
链接
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
为{我}。onclick =函数(){
警报(一);
返回false;
}
}
1。这个代码点击链接i - 1,为什么会这样
是一个简单的变量范围的功能,如果功能(警戒){(i);return false;}作为一个功能的一个(一);(我)内部变量未定义,但内部使用,所以向外搜索,发现在我的循环定义,循环执行启动后单击事件后,对价值的执行结束后我已经变成1;所以每次弹出的是- 1;
for循环的2.2个参数并不常见!怀疑吗
对于(语句1,语句2,语句3){
}
对于循环条件
通常说语句1、语句2和语句3都是可选的。
b.报表2:
通常,语句2用于评估初始变量的条件。
语句2也是可选的。
如果语句2返回true,循环再次启动,如果返回false,循环将结束。
提示:如果省略语句2,则必须在循环中提供中断。否则循环不能停止。这可能导致浏览器崩溃。
C.关于我——判断:
当我判断--是真/假时,它是第一个判断我,然后是我——当谈到我的最终判断时,当我实际上判断= = 0时,判断再次执行,for循环终止,所以i的值变成1;
var I=1;
!!!我
uff1a解
复制代码代码如下所示:
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
(函数(i){)
为{我}。onclick =函数(){
警报(一);
返回false;
}
})(一)
}
或:
复制代码代码如下所示:
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
var =函数(i){
为{我}。onclick =函数(){
警报(一);
返回false;
}
}
A(I);
}
其他互联网用户7在解决方案演示:
复制代码代码如下所示:
关闭演示
函数init(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick =函数(){
警报(一);
}
}
}
产品1
产品两
产品三
产品四
产品五
1,将变量i保存到每个段落对象(p)
复制代码代码如下所示:
函数init(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
人{我}我=我;
我祈祷{ }。onclick =函数(){
警戒(这一);
}
}
}
2。从变量i保存匿名函数本身
复制代码代码如下所示:
功能init2(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(人{我}。onclick =函数(){()
警报(参数。被叫。我);
})i = i;
}
}
3,用一层闭包,以函数参数的形式传递给内部函数。
复制代码代码如下所示:
功能init3(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(函数)
我祈祷{ }。onclick =函数(){
警报(精氨酸);
};
})(i);调用参数
}
}
4,用一层闭包,以局部变量的形式传递给内存函数。
复制代码代码如下所示:
功能init4(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(函数(){())
var
我祈祷{ }。onclick =函数(){
警报(临时);
}
});
}
}
5,添加一层闭包并作为响应事件返回函数(注意与3的细微差别)
复制代码代码如下所示:
功能init5(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick=功能(arg){
返回(函数)返回函数
警报(精氨酸);
}
}(一);
}
}
6。事实上,函数实现时,函数的每个实例都会产生闭包。
复制代码代码如下所示:
功能init6(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick =新功能(警报(+我+);); / /新产生一个函数实例一
}
}
7。用功能实现,注意与6的区别
复制代码代码如下所示:
功能init7(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick=功能('alert(+我+ ')')
}
}
完整的总结,欢迎拍砖!
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。