let、var和const之间有哪些区别 ?

131 阅读1分钟

变量提升的含义

在了解let、var、const三者区别之前,首先我们得理解什么是变量提升,简单地说,一段代码在执行前会进行预解析,一般是先解析函数的声明和变量的定义,之后对函数和变量进行计算和赋值等一系列操作

1.变量声明

  1. let 声明变量初始化并修改值
  2. var 声明的变量具有变量提升的特点,会自动提升到作用域最顶端
  3. const 声明的常量不能修改
    // var 声明变量初始化并修改值
    console.log(a);
    var a = 5


    // let 声明变量初始化并修改值
    var b = 10;
    console.log(b);
    b = 20

    // const 声明常量初始化并修改值
    const c = '20';

2.作用域

  • let可以在块级作用域内声明
    console.log(num) // undefined
    var num = 20

3.重复声明

  • let不允许在相同的作用域里面,去声明同一变量
  • var是可以在相同的作用域里面,去重复地声明同一个变量,不过后面声明的变量一般会覆盖前面的变量
    var num = 20 
    var num = 30
    console.log(a) // 30