为了账号安全,请及时绑定邮箱和手机立即绑定

js闭包问题----为什么写法1的参数是数字而写法2的参数为mouseEvent?

js闭包问题----为什么写法1的参数是数字而写法2的参数为mouseEvent?

赵日天l 2016-08-24 01:07:14
**********************写法1************************************8<body>  <ul class="ul">    <li>chun</li>    <li>xia</li>    <li>qiu</li>    <li>dong</li>  </ul> <script>  var lis = document.getElementsByTagName('li');  for(var i=0;i<lis.length;i++){    lis[i].onclick = (function(i){      return function(){        alert(i);      }    })(i);  }  </script></body>*****************************写法2*********************<body>  <ul class="ul">    <li>chun</li>    <li>xia</li>    <li>qiu</li>    <li>dong</li>  </ul>  <script>  var lis = document.getElementsByTagName('li');  for(var i=0;i<lis.length;i++){    lis[i].onclick = function(i){      alert(i);    }  }</script>***********************************************************为什么写法1的参数是数字而写法2的参数为mouseEvent?
查看完整描述

2 回答

?
Judy_1024

TA贡献4条经验 获得超1个赞

  1. 事件调用的函数的第一个参数是事件对象本身;

  2. 作用域的问题,可以看看http://www.imooc.com/learn/277 第6、7章。

查看完整回答
反对 回复 2016-08-24
?
_潇潇暮雨

TA贡献646条经验 获得超225个赞

写法1是一个匿名立即执行函数,俗称IIFE,它接受一个外部参数i,这个参数i和for循环里面的i是一样的,所以会打印出数字,写法2中的i是事件对象event。

查看完整回答
反对 回复 2016-08-24
  • 2 回答
  • 1 关注
  • 1472 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信