1:是否可以重复定义

  • var可以重复定义
  • let不可以重复定义
  • const也不可以重复定义

这里的重复定义指的是同一上下文

2:是否可以修改值

  • var可以修改值
  • let可以修改值
  • const不可以修改值

3:是否声明提升

  • var声明会提升
  • let声明不会提升
  • const声明也不会提升

4:是否支持块级作用域

  • var 严格来说不可以,但是function可以
  • let 支持
  • const 支持

5:是否支持循环定义变量

  • var支持
  • let支持
  • const不支持

图示

var,let,const的区别_javascript

let专栏

  • 使用let关键字声明的变量具有块级作用域
  • 在一个大括号中,使用let关键字能形成一个块级作用域,var则不行,除非var在function作用域中。
  • 防止循环变量变为全局变量
    var,let,const的区别_赋值_02
  • 不存在变量提升的问题
  • 暂时性死区
    var,let,const的区别_赋值_03

const专栏

  • const用于声明常量,常量就是值(内存地址)不能变化的量。
  • 具有块级作用域。
    var,let,const的区别_块级作用域_04
  • 声明常量时必须赋值
    var,let,const的区别_数据_05
  • 对于基本数据类型的数据来说,一旦赋值,值不能修改。
  • 对于复杂结构的数据来说,不能更改内存地址,但是能够更改数据结构内部的值。
    var,let,const的区别_javascript_06
    var,let,const的区别_块级作用域_07