ES6 学习之 let

关于闭包:

<html>
<body>
<div>
<div>

        
<button >aaa</button>
<button >bbb</button>
<button >ccc</button>

</div>
</div>


        <script  type="text/javascript">
      // script type="text/javascript" 可以省略 不写,但是如果写,必须 type="text/javascript"
var btns = document.getElementsByTagName("button"); alert(btns) var start = 100; // start = 0; for(var i = start; i< btns.length; i++ ) { btns[i].onclick = function() { alert(i);// 这样的写法有问题, 即 闭包问题 } } start = 100; //start = 0; for(var i =start; i< btns.length; i++ ) { (function(i) { // 奇怪的 闭包的 写法, 需要匿名函数, 首先外面一堆(), 然后匿名函数,一个形式参数i, 然后立即调用匿名函数,实际 参数 仍然是 i 。。。 btns[i].onclick = function() { alert(i); } }) (i); } start = 0; for(let i =start; i< btns.length; i++ ) { // 一个let 关键字,轻松解决问题!! btns[i].onclick = function() { alert("eeeee" + i); } } </script> </body> </html>
原文地址:https://www.cnblogs.com/FlyAway2013/p/11379338.html