What is the difference between var and let in Typescript?

后端 未结 4 1511
旧时难觅i
旧时难觅i 2020-12-28 12:13

I submitted a question on stack overflow asking how I could stop the putTestQuestionResponses() function from executing IF a previous version was already executing.

相关标签:
4条回答
  • 2020-12-28 12:27
    function varTest() {
      var x = 1;
      if (true) {
        var x = 2;  // same variable!
        console.log(x);  // 2
      }
      console.log(x);  // 2
    }
    
    function letTest() {
      let x = 1;
      if (true) {
        let x = 2;  // different variable
        console.log(x);  // 2
      }
      console.log(x);  // 1
    }
    

    I found this here

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

    0 讨论(0)
  • 2020-12-28 12:35

    var declaration is function scoped and let declaration is block scoped.

    See https://basarat.gitbooks.io/typescript/content/docs/let.html for more details.

    0 讨论(0)
  • 2020-12-28 12:36

    var variables in JavaScript are function scoped. This is different from many other languages (C#, Java, etc.) where the variables are block scoped. If you bring a block scoped mindset to JavaScript, you would expect the following to print 123, instead it will print 456:

    var foo = 123;
    if (true) {
        var foo = 456;
    }
    
    console.log(foo); // 456
    

    This is because { does not create a new variable scope. The variable foo is the same inside the if block as it is outside the if block. This is a common source of errors in JavaScript programming. This is why TypeScript (and ES6) introduces the let keyword to allow you to define variables with true block scope. That is, if you use let instead of var, you get a true unique element disconnected from what you might have defined outside the scope. The same example is demonstrated with let:

    let foo = 123;
    if (true) {
        let foo = 456;
    
    }
    
    console.log(foo); // 123
    
    0 讨论(0)
  • 2020-12-28 12:47

    example:

    // demo: var
    for(var i =0 ; i<5 ; i++){
       console.log(i) 
    }//finally i =5
    console.log(i) // i=5
    
    // demo: let 
    for(let i = 0; i<5;i++){
       console.log(i)
    }
    console.log(i)// i is undefined
    
    0 讨论(0)
提交回复
热议问题