JS 作用域,作用域链,闭包

语言: CN / TW / HK
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<button id="button1">Button1</button>
<button id="button2">Button2</button>
<button id="button3">Button3</button>
<script type="text/javascript">
    var nalert = function(i) {
        alert("Button"+i);
    }
    for(var i=1;i<4;i++){
        var b=document.getElementById("button"+i);
        b.addEventListener("click",function(){alert('button'+i);},false);
    }
    console.log(i);
    let x=1;
    function A(y){
        let x =2;
        function B(z){
            console.log(x+y+z)
        }
        return B;
    }
    let C = A(2);
    C(3);
</script>
</body>
</html>

个人理解,给button添加时间监听的时候,alert(i) 这个i是取自window.i 所以导致点击任何一个按钮都是一样的

什么是闭包?

var a=3;
function fuc(){
    alert(a);
}

这就是闭包……函数内可以用到外面环境的变量