/**
* 1堆栈
* 堆 用于存放引用类型,内存不会自动释放。
* 栈 用于存放基础类型,内存会自动分配和释放空间。
* 引用类型是在栈中存放一个指针,在堆中存放数据。
*
* 2进程和线程
* CPU只能运行一个进程
* 一个进程可以有多个线程
* 浏览器是多进程的,每打开一个tab就是一个进程。
* js是单线程
*
* 3数组去重
* 1 ES6 [...new Set(arr)]
* 2 for嵌套for splice删除重复数据
* 3 sort排序
* 4 新数组 存放不同的
*
* 4 虚拟DOM
* 虚拟DOM 是一个javascript对象树,通过对象的属性来修饰 来对DOM描述,最终映射成真实的DOM
* 简单来说虚拟DOM就是一个js对象。
* 优点:通过diff算法 找到更改的 内容,只更新 这一部分 可以同时多个更改一起修改。传统的DO修改是每次都是重新绘制
*
* 5 清除浮动
* 1 overflow hidden
* 2 设置父级高度
* 3 伪元素:after{clear:both;visibility:hidden;display:block;content:''}
*
*/