Javascript整理-变量

118 阅读1分钟
  • var/let/const

  • 变量提升和函数提升

  • 暂时性死区

  • 函数作用域和全局作用域(ES5)

  • 块级作用域(ES6)

  • 判断变量类型

1. var

    a. 变量提升

    var变量的作用域在该句所在的函数内, 且可以函数变量提升

    b. 全局作用域

     var只有全局作用域和函数作用域概念,没有块级作用域的概念。但是会把{}内也假称为块作用域。

2. let

    a. 块级作用域

    只有块级作用域的概念 ,由 { } 包括起来,if语句和for语句里面的{ }也属于块级作用域。

    b. 暂时性死区

    不能进行变量提升, 变量声明之前引用都会报错

    c. 不允许重复声明变量否则会报错 

    d. 全局对象/全局变量

es5中全局对象和全局变量在使用上没什么区别, 但是全局声明的变量不能通过deletewindow/global上删除

es6中, let 和 const声明的全局变量不属于全局对象上挂载的属性

3. const

     a. const 变量和let区别不大, 主要是在于const不能被赋值, 且变量必须经过初始化

     b. const声明的普通变量是不能被赋值的,但是如果声明的是复杂数据类型可能就不受控制了,因为变量只是存储复杂数据类型的地址