TypeScript學習——let、var

一、let 與 var

let 是在代碼塊內有效,var 是在全局範圍內有效:

{
  let a = 0;
  var b = 1;
}

a  // ReferenceError: a is not defined
b  // 1

 

二、for 循環計數器用let還是var, let更合適

說明:javascript是單線程的,setTimeout()等當前程序線程執行完, 纔開始計時,計時到了之後重新建立一個新的程序線程來執行setTimeout()內的代碼。


//打印出來 i都是3,  var是全局範圍內有效,i++ 觸發了3次,特別注意i最後一次++後是3而不是2
for (var i = 0; i < 3; i++) {
    setTimeout(function (){
        console.log("i:" + i);
    });
}


//打印出來 i都是0、1、2,  變量 j 是用 let 聲明的,當前的 i 只在本輪循環中有效,每次循環的 j 其實都是一個新的變量
for (let j = 0; j < 3; j++) {
    setTimeout(function (){
        console.log("j:" + j);
    });
}

 

以下爲代碼示例:

<html>
<head></head>
<body>
</body>
</html>

<script>
    {
        let a = "test1";
        var b = "test2";

        alert("a:" +a) // a:test1
        alert("b:" +b) // a:test1
    }

    alert("b:" +b);// var 是在全局範圍內有效
    //alert("a:" +a); // 報錯 ReferenceError: a is not defined  let 是在代碼塊內有效
    

    //打印出來 i都是3,  var是全局範圍內有效,i++ 觸發了3次,特別注意i最後一次++後是3而不是2
    for (var i = 0; i < 3; i++) {
        setTimeout(function (){
            console.log("i:" + i);
        });
    }

    //打印出來 i都是0、1、2
    for (let j = 0; j < 3; j++) {
        setTimeout(function (){
            console.log("j:" + j);
        });
    }
</script>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章