返回

JavaScript var、let、const小结(简洁版一目了然)

前端

var

  • 变量声明:

    • 在函数外部声明:全局变量(成为 window 对象的属性)
    • 在函数内部声明:局部变量(若在函数内部不声明直接赋值:全局变量(不推荐且在严格模式会抛出 ReferenceError
  • 变量提升:

    • 变量声明会提升到函数或块的顶部,但是变量的值不会提升,因此在变量声明之前访问变量会抛出 ReferenceError
  • 作用域:

    • 全局变量:在整个脚本中都可以访问
    • 局部变量:只能在声明它的函数或块中访问

let

  • 变量声明:

    • 只能在函数或块中声明
    • 在严格模式下,必须在使用之前声明
  • 变量提升:

    • 变量声明会提升到函数或块的顶部,并且值也会提升
  • 作用域:

    • 只能在声明它的函数或块中访问

const

  • 变量声明:

    • 只能在函数或块中声明,且必须初始化
    • 在严格模式下,必须在使用之前声明
  • 变量提升:

    • 变量声明会提升到函数或块的顶部,并且值也会提升
  • 作用域:

    • 只能在声明它的函数或块中访问
  • 其他:

    • const 声明的变量的值不能被重新赋值

总结

特性 var let const
变量声明 在函数外部或内部声明 只能在函数或块中声明 只能在函数或块中声明,且必须初始化
变量提升 变量声明会提升到函数或块的顶部,但值不会提升 变量声明和值都会提升到函数或块的顶部 变量声明和值都会提升到函数或块的顶部
作用域 全局变量或局部变量 只在声明它的函数或块中访问 只在声明它的函数或块中访问
其他 值不能被重新赋值

参考资料