作用域链

1.通过封闭空间传递i值,回调函数执行时,注册事件结束了;
js部分

 function sss() {
    for(var i=1; i < 4; i++) {
        // 封闭空间自执行,传递i值到内部
        (function bb(data_i) {  // data_i是形参
            // 获取元素
         var b = document.getElementById('button'+data_i);
         // DOM二级事件(点击)
             b.addEventListener('click',function (){
            console.log('button'+data_i)
             }) 
        })(i)

    }
   }
   window.onload = sss;

  // 这是一个函数,匿名函数;既然是函数,那就在作用域链上具有一个对象,
  // 这个函数里面使用到i值,它自然会在作用域上查找;
 // 这个匿名函数 --> 外部的函数sss() -->全局对象window
 // 匿名函数中找不到i,自然跑到了sss(), ok,在for中找到了,

// 这时注册事件已经结束了,不要以为它会一个一个把i放下来,
// 因为函数作用域之内的变量对作用域内是一直可见的,就是说会保持到最后的状态
// 当匿名函数要使用i的时候,注册事件完了,i已经变成了4,所以都是Button4

html部分

<button id="button1">1</button>
<button id="button2">2</button>
<button id="button3">3</button>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值