1.原始数据类型:
string - 字符串
number - 数字
boolean - 布尔 true false
undefined - 所有仅声明,未赋值的变量的默认值! - 空(修饰原始数据类型的空)
null - 空 (修饰对象的空)
*symbol
ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。
// 没有参数的情况
let s1 = Symbol();
let s2 = Symbol();
s1 === s2 // false
// 有参数的情况
let s1 = Symbol('foo');
let s2 = Symbol('foo');
s1 === s2 // false
2.引用类型对象:
array(数组) function(函数) Math Date等
1. 所有仅声明未赋值的变量的默认值 - undefined
undefined为空 - 修饰原始数据类型
2. null - 修饰对象的空
null专门表示一个变量不再指向任何对象的地址了!
null的用法有2种:
1. var 变量 = null; - 打标记
表示将来该变量即将指向一个对象,只是此时什么都没有指向
2. var obj = 对象;
把该对象使用完毕后,就把obj主动赋值null - 》 obj=null
将来一个变量不再指向对象了,那么可以主动赋值为null
这么做得话,就表示主动的释放内存,节省内存空间从而提高浏览器性能
内存中有个垃圾回收器,如果一个对象没有变量指向(引用),那么就会被垃圾回收器回收,从而释放内存
js中的对象:内存中保存一组相关数据和功能的整体
对象都是new操作符创建的
new专门在内存中开辟一个空间,保存数据和功能,返回*存储地址*
3.、数据类型转换
1、数据类型转换 - 隐式转换 隐式转换:不需要程序员干预,js可以自动的完成类型转换
1. 算数计算中,一切数据都默认转换为数字后,再做计算
boolean: true -> 1 false -> 0
null -> 0
undefined -> NaN -> not a number (不是一个数字)
一些数据不能转换为数字的话,则会转换为NaN
**NaN不等于,不大于,不小于任何值包括他自己
只要NaN参与的运算结果永远是NaN
NaN虽然表示不是一个数字,但是他本身属于number数据类型
2. 在+运算中,只要碰到字符串,+就不再是+法运算符号了,而变成了字符串拼接符号了,导致另一个不是字符串类型的数据,会变成字符串类型数据
```