js在闭包中事件绑定的具体函数

先说明关键:绑定事件、函数和函数执行。闭包只是环境

遇到的问题:

在写闭包时发现按照以往写绑定事件时会得到不一样的结果:second函数只输出 ‘aaaaa’。

而分开写就没有问题:first()。

明白为什么要了解:

写在前面:绑定事件以onclick举例

1、绑定事件时会把要绑定的函数走一遍,onlick接收的是一个,一般是个函数。接收之后存起来,事件触发时执行。

2、函数和函数返回值(即执行了该函数)。在first()中,onclick绑定的是first()的返回值,即匿名函数。在second()中绑定的是second()本身。

   <button id="btn"></button>
   <script>
      const btn = document.getElementById("btn");
      // function first() {
      //    let n=0;
      //    console.log('绑定时走了一遍');
      //    return function () {
      //       console.log(n++);
      //    }
      // }
      // btn.onclick = first() //绑定事件时调用first(),执行first(),onclick绑定的是first里return的function

      btn.onclick = function second() { //直接把second()绑给onclick
         let n = 0;
         console.log('aaaaa');
         return function () {
            console.log(n++);
            console.log('这个代码块不会执行,因为直接return了');
         }
      }
   </script>

​

总结:对前面的知识没有理解透彻,这个并不难,但要注意细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值