一、值类型
常见的有:number、string、Boolean、undefined、Symbol
let a = 100;
let b = a;
a = 200;
console.log(b) //打印100
二、引用类型
常用的有:object、Array、null(指针指向为空)、function
let a = {number: 10};
let b = a;
a.number = 20;
console.log(b.number) //打印20
两者的区别:
值类型暂用空间小,所以存放在栈中,赋值时互不干扰,所以b还是100
引用类型暂用空间大,所以存放在堆中,赋值的时候b是引用了和a一样的内存地址,所以a改变了b也跟着改变,b和a相等
如图:
![](https://i-blog.csdnimg.cn/blog_migrate/e2595d5ba4905810fba87b81df2617e3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/682b7756f1b7503ea4162af77f1b025a.png)
三、类型转换
常出现的地方有:字符串拼接、==、if语句和逻辑运算
1、字符串拼接
let a = 5 + 10; //打印15
let b = 5 + '10'; //打印'510'
let c = true + '10' //打印‘true10'
2、两等==和三等===
注意:if (a == null) 相当于 if (a === null || a === undefined)
3、if语句和逻辑运算
truely和falsely变量