搞定es6系列之var/let/const

01、关于数据类型

原始/基础数据类型(值引用/复杂数据类型(地址
NumberFunction
BooleanObject
UndefinedArray
Null
String
Symbol(es6
BigInt(es10
## 判断 JavaScript 数据类型的常用方法--返回值:true/false
    @1typeof 操作符:基础数据类型首选
    @2instanceof 操作符:判断引用类型的具体子类
    @3Object.prototype.toString.call ():万能判断方法
    @4、特殊判断方法:针对特定类型
        如:数组:Array.isArray()
            数字:Number.isNaN():专门判断是否为真正的 NaN(弥补 typeof NaN 返回 "number" 的缺陷)

02、es5中的var关键字

image.png

var的四个缺点:
1.存在变量提升(出现只声明不赋值
2.同一个作用域下可以重复声明
3.不存在块级作用域(只存在全局/函数作用域)
4.不限制修改(数据安全性达不到保障

ES5中,声明变量用var,ES6为什么会新增let和const 两个关键字呢? 答:为解决其缺点不区分变量/常量的定义,以及变量提升与随意被重复修改的问题

03、es6中的let/const关键字

let/const解决了什么问题:
@1、解决var不区分变量/常量的区别
    let:声明变量
    const:声明常量
@2、解决变量提升的问题
    相同点:letconst都不能实现变量提升
    不同点:let可以先声明后赋值
            const只能声明的同时立即赋值
@3、解决同一作用域下可以重复声明的问题
    相同点:同一作用域下都不可以重复声明
    不同点:let/const在不同作用域下可以重新声明
@4、存在块级作用域
    可以用来实现数据之间的隔离性
@5、限制修改(同一作用域下)
    let:可多次赋值
    const:一旦赋值了,就不能再次赋值了,声明的时候必须赋值
            不能修改直接原始值,但是可以修改地址里面的值

小tip:
        命名规范:
            const声明的常量一般采用大写字母配合下划线例:const PI= Math.PI