var, let, const 区别

299 阅读1分钟

var

  • function show(){
    	var a = 1
    }
    console.log(a,'外部') // a is not defined
    
  • // 变量提升
    function show(){
    	console.log(a)
    }
    var a = 1
    show() // 1
    
  • function show(){
    	var a = 1
    	var a = 2
    	console.log(a)
    }
    show() //2
    
  • 总结:1、 var定义的变量是整个封闭函数

    ​ 2、变量提升,不论var 定义的变量在一个函数内部第几行,都会提升到作用域的最顶部

    ​ 3、var 定义的变量可以变重复定义,下面定义的变量会覆盖上面定义的变量

let

  • let a = 1
    function show(){
    	let a =2
    	console.log(a)
    }
    show() // 2
    
  • function show(){
    	let a =1
    	let a =2
    	console.log(a)
    }
    show() // Identifier 'a' has already been declared
    
  • function show(){
    	console.log(a)
    	let a = 1
    }
    show() // Cannot access 'a' before initialization
    
  • 总结: 1、let 定义的变量不会变量提升

    ​ 2、在同一个作用域内 ,不允许重复定义

    const

    • const a =1
      function show(){
      	a = 2
      	console.log(a)
      }
      show() //  Cannot access 'a' before initialization
      
  • 总结: 1、const 专门用来声明常量,

    ​ 2、const 定义的基本类型常量不可改变,声明是必须初始化

    ​ 3、不会变量提升,重复定义会报错,与let相同

不足之处请指出,共同进步