类型
基本类型
基本类型的值都是存放在栈内存中的,变量之间的赋值都是通过拷贝进行的,此后两个变量再参与任何操作的时候都不会相互影响
NumberStringBooleanUndefined:声明但未定义的变量Null:空指针对象Symbol:独一无二的值,使用Symbol()创建bigInt:用于当整数值大于Number数据类型支持的范围时
引用类型
引用类型的值都是存放在堆内存中的,变量之间的赋值都是通过复制引用进行的,由此延申出浅复制和深复制概念
类型转换
转换为
boolean:判断时,除此部分值外,全部转换为truenullundefined""NaN-0+0
对象转换为基本类型:顺序触发对象的方法获取返回值作为基本类型
Symbol.toPrimitivevalueOftoString
四则运算转换规则
- 加法:有字符串类型,其他类型自动转换为字符串类型
- 其他运算法:转换为数值进行计算
==比较- 通常比较结果跟我们的认知一样,只有几个特殊的结果
NaN == NaN => falseundefined == null => true- 字符串和数值比较会先把字符串转换为数值类型
- 布尔值和数值比较会先把布尔值转换为数值类型
- 有对象类型的值则将其转换为基础类型
判断类型的方式
typeOf:只能判断基本类型,不能判断引用类型Object.prototype.toString.call()instenceOfArray.isArray()
