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>

posted @ 2019-09-26 15:29  预立科技  阅读(125)  评论(0编辑  收藏  举报