1. var声明的变量会挂载在window上,而let和const声明的变量不会 ```javascript var a = 100; console.log(a,window.a); // 100 100

    let b = 10; console.log(b,window.b); // 10 undefined

    const c = 1; console.log(c,window.c); // 1 undefined

    1. 2. var声明变量存在变量提升,而letconst不会
    2. ```javascript
    3. console.log(a); // undefined ===> a已声明还没赋值,默认得到undefined值
    4. var a = 100
    5. console.log(b); // 报错:b is not defined ===> 找不到b这个变量
    6. let b = 10;
    7. console.log(c); // 报错:c is not defined ===> 找不到c这个变量
    8. const c = 10;
    1. let 和 const声明形成块作用域 ```javascript if(1){ var a = 100; let b = 10; }

    console.log(a); // 100 console.log(b) // 报错:b is not defined ===> 找不到b这个变量

    if(1){

    1. var a = 100;
    2. const c = 1;

    } console.log(a); // 100 console.log(c) // 报错:c is not defined ===> 找不到c这个变量

    1. 4. 同一作用域下,let const 不能声明同名变量,而var可以
    2. ```javascript
    3. var a = 100;
    4. console.log(a); // 100
    5. var a = 10;
    6. console.log(a); // 10
    7. let a = 100;
    8. let a = 10;
    1. const
    • 一旦声明必须赋值,不能使用null占位。
    • 声明后不能再修改
    • 如果声明的是复合类型数据,可以修改其属性