ES6的新特性-很好的解决了闭包的问题

83 阅读1分钟

ES6的新特性-很好的解决了闭包的问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            float: left;
            width: 100px;
            height: 50px;
            border:1px solid red;
        }
    </style>
</head>
<body>
    <div></div>
    <div></div>
    <div></div>
    <script>
        var divs = document.querySelectorAll("div");
    //    for(var i = 0;i<divs.length;i++){
    //        divs[i].onclick = function(){
    //         //    报错 因为存在闭包的问题
    //           divs[i].style.backgroundColor = "pink"
    //        }
    //    }
 
    // ES6的新特性
    var divs = document.querySelectorAll("div");
     //变量用一个let定义很好的解决了闭包的问题
       for(let i = 0;i<divs.length;i++){
           divs[i].onclick = function(){
              divs[i].style.backgroundColor = "pink"
           }
       }
    </script>
</body>
</html>