var let const区别

  • var存在变量提升,let、const不存在变量提升

    console.log(a); // undefined
    var a = 1;
    console.log(b); // Cannot access 'b' before initialization
    let b = 1;
    console.log(c); // Cannot access 'c' before initialization
    const c = 1;
    
  • let、const声明形成块作用域

    if (1) {
      var a = 1;
      let b = 2;
      const c = 3;
    }
    console.log(a); // 1
    console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量
    console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量
    

    var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问

    let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。

    let定义的常量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。

  • 同一作用域下var可以声明同名变量,let、const不行

    var a = 1;
    console.log(a); // 1
    var a = 2;
    console.log(a); // 2
    
    let a = 1;
    console.log(a);
    let a = 2;
    console.log(a); // 控制台显示Identifier 'a' has already been declared
    
  • const说明

    a. 一旦声明必须赋值,不能使用null占位

    b. 声明后不能再修改

    c. 如果声明的是复合类型数据,可以修改其属性

你可能感兴趣的:(var let const区别)