美文网首页
let var const的区别

let var const的区别

作者: 凉城十月 | 来源:发表于2020-12-31 11:45 被阅读0次

    1. ES6

    • var:在ES6出来之前,声明变量都只能使用var关键字
    • letconst都是ES6出来的新语法

    2. 变量提升

    • var会进行变量提升
      console.log(a) //undefined
      var a = 1
      
      letconst这么打印的时候,会报错。
    • letconst 不能变量提升
      console.log(b) //报错: b is not defined
      let b = 2
      
      报错: b is not defined
      console.log(c) //报错: c is not defined
      let c = 3
      
      报错: c is not defined

    3. 作用域

    • var 是全局变量。
      function fn(){
        if(true){
          console.log(a)
        }else{
          var a = 1
          console.log(2)
        }
      }
      fn() // undefined
      
      这段代码打印出来的事undefined,变量a会提升到if的上面去
    • constlet 都是块级局部变量。
      {
        let a
      }
      console.log(a) //undefined
      
      打印出来是undefined
      {
        const a =1
      }
      console.log(a) //undefined
      
      打印出来也是undefined

    4. 申明赋值

    • varlet 都不需要在申明的同时赋值
      var a 
      console.log(a) //undefined
      
      let b
      console.log(b) //undefined
      
      打印出来的都是undefined
    • const 必须在声明的同时赋值,不然就会报错
      const a
      
      编译器就会报错:

      控制台报错:

      SyntaxError: Missing initializer in const declaration
      

    5. 赋值更改

    • varlet都可以在作用域内改变声明的变量的值
      var a = 1
      a = 2
      console.log(a) //2
      
      打印出来的是2。
      let b = 1
      b = 2
      console.log(b) //2
      
      打印出来的是2。
    • const声明的变量在作用域内,基本数据类型赋值不能更改。如果是复杂类型,就可以修改。
      const c = 1
      c = 2
      
      编译器报错:
      Attempt to assign to const or only variable
      
      控制台报错:
      TypeError: Assignment to constant variable.
      

    6. 同名变量

    • var 可以声明同名变量
      var a = 1
      var a = 2
      console.log(a) //2
      
      声明并赋值成功,打印出来的是2。
    • letconst在作用域内不能声明同名变量
      const a = 1
      const a = 2
      
      报错:
      SyntaxError: Identifier 'a' has already been declared
      

    相关文章

      网友评论

          本文标题:let var const的区别

          本文链接:https://www.haomeiwen.com/subject/jyblwktx.html