1.为什么会有虚拟DOM?
虚拟dom的作用是:以js的形式在内存中描述dom结构,当页面内容发生变化时,对前后虚拟dom进行对比,计算如何以最小代价操作真实dom,在完全不访问真实dom的情况下,掌握dom结构。
webcore中有个html模块,代表html引擎,负责解析html文档,并解析成一颗dom树,webkit中默认有个js引擎,负责执行js代码的,具有操作dom树的能力,但是从浏览器内核的结构中看,js引擎是不可以直接操作dom树的,需要借助浏览器中的dom接口来操作真实dom,这样代价就会很大,而且会引起重绘,所以产生了虚拟dom。
2.数组、链表和列表的区别:
数组:
1)所占用的内存是一块连续的区域
2)在使用前需要提前申请所占内存的大小
3)在数组的起始位置,插入和删除的效率都很低
4)随机访问的效率高
链表:
1)所占用的内存不是连续的
2)链表有两个属性,第一个是但前元素的值,第二个是个指针,指向下一个元素
3)在任意位置插入、删除效率高
4)查找数据时效率低
数组和列表的区别:
1)数组可以存储任意数据类型,而列表只能存储引用数据类型
2)数组中元素的类型须保持一致,而列表中不一定