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);
}

這就是閉包……函式內可以用到外面環境的變數