01、关于数据类型
| 原始/基础数据类型(值 | 引用/复杂数据类型(地址 |
|---|---|
| Number | Function |
| Boolean | Object |
| Undefined | Array |
| Null | |
| String | |
| Symbol(es6 | |
| BigInt(es10 |
## 判断 JavaScript 数据类型的常用方法--返回值:true/false
@1、typeof 操作符:基础数据类型首选
@2、instanceof 操作符:判断引用类型的具体子类
@3、Object.prototype.toString.call ():万能判断方法
@4、特殊判断方法:针对特定类型
如:数组:Array.isArray()
数字:Number.isNaN():专门判断是否为真正的 NaN(弥补 typeof NaN 返回 "number" 的缺陷)
02、es5中的var关键字
var的四个缺点:
1.存在变量提升(出现只声明不赋值
2.同一个作用域下可以重复声明
3.不存在块级作用域(只存在全局/函数作用域)
4.不限制修改(数据安全性达不到保障
ES5中,声明变量用var,ES6为什么会新增let和const 两个关键字呢? 答:为解决其缺点不区分变量/常量的定义,以及变量提升与随意被重复修改的问题
03、es6中的let/const关键字
let/const解决了什么问题:
@1、解决var不区分变量/常量的区别
let:声明变量
const:声明常量
@2、解决变量提升的问题
相同点:let与const都不能实现变量提升
不同点:let可以先声明后赋值
const只能声明的同时立即赋值
@3、解决同一作用域下可以重复声明的问题
相同点:同一作用域下都不可以重复声明
不同点:let/const在不同作用域下可以重新声明
@4、存在块级作用域
可以用来实现数据之间的隔离性
@5、限制修改(同一作用域下)
let:可多次赋值
const:一旦赋值了,就不能再次赋值了,声明的时候必须赋值
不能修改直接原始值,但是可以修改地址里面的值
小tip:
命名规范:
const声明的常量一般采用大写字母配合下划线例:const PI= Math.PI