1、vue2 中v-for中 key的作用?
- 其实就是给每个标签生成一个唯一的标签,便于vue 能够更快更准的更新数据
- 例如 有一组数据【1,2,3】=> 我删除第二个数据,【1,3】
- 对于我们来说很清楚少了第二个,但是代码需要去便利,会认为是【1,2】,删除了第三个
2、js的基本类型有哪些?引用类型有哪些?null和undefined的区别?
- 基本类型有:Number,String,Boolean, Null,undefind。
- 引用类型:Object,Array,Date,RegExp。
- undefined 表是一个‘无’ 的原始值,转为数值为NaN,undefined类型的值只有一个,即特殊的undefined,声明了变量并未对它进行
- 复制,这个变量的值就是undefined
- null 标识一个 ‘无’的对象,转为数值是为0,也是一个只有一个值的数据类型, null表示一个空对象指针,typeof 返回时一个Object
- 栈(内存中的栈内存):变量和对象的引用存储
- 堆:存储对象中的数据,例如Array,Object
3、css中link和import的区别:
- link是Htnl标签,除了加载css外,还可以定义RSS等事务,
- @import 属于css ,只能加载css,等待页面完全记载后才开始加载, css2.1才提出,对低版本浏览器有一定的兼容性问题,不支持css去操作
4、事件冒泡和事件捕获:
- 事件捕获: 自上而下的去触发
- 事件冒泡: 自下而上的去触发
element.addEventListenter(event,function(),false)
// 第三个参数:ture 事件捕获
// false 事件冒泡 (默认参数)
// querySelector 也是同样的用法
阻止事件冒泡是平时用到最多的
event.stopPropagation();
return false;
event.preventDefault();
5、vue中的nextTick 的使用:
vue 有自己的dom更新策略,如果想在更改dom后执行一些dom操作,想确保dom都更新完,就需要把操作放在$nextTick里
官方示例及用法https://cn.vuejs.org/v2/api/#Vue-nextTick
6、vue中的生命周期及作用:
答出几个常用的生命周期就可以了
beforeCreate // 页面实例创建之前,这个时候是不能访问到data的数据
created // vue实例创建,可以访问data 里的数据,一般接口请求放在这里
beforeMount //很少用
mounted // 页面dom渲染完成,可以操作dom,需要操作dom 的接口也可以放在这里
beforeUpdate
updated
beforeDestroy //页面销毁之前
destroyed // 页面销毁之后
7、vue中的路由传参:
query 和params 传参两种
query是 ? 形式传参,刷新页面参数不丢失
params 是 / 形式传参, 默认刷新页面,参数会丢失,在路由中配置 /:id ,可以解决页面刷新参数丢失的问题
8、js垃圾回收机制:
js 垃圾回收有两种方法:标记清楚,引用计数
1 标记清除:
是js 最常见的回收机制,开始会给存储在内存中所有变量加上标记,当进入的执行环境后,会去掉环境中变量,以及被环境中变量引用变量的标记,
而此时依然被标记的变量会被视为准备删除的变量,垃圾收集器会最终完成内存清除工作,销毁这些带有标记的变量,回收它们所占用的内存空间
2 引用计数:
跟踪记录每个值被引用的次数,当声明一个变量并将一个只用类型赋值给该变量时,则这个值的引用次数就加1,这个值的引用指向给了另一个值,则这个值的引用次数就减1,
当引用次数变成0时,则说明没有办法访问这个值了,垃圾回收器在下次运行时,就会释放这些值的空间,将内存回收回来
9、浏览器的渲染过程,以及阻塞(css阻塞,js阻塞):
一个渲染引擎主要包括:HTML解析器,CSS解析器,javascript引擎,布局layout模块,绘图模块
浏览器渲染页面的整个过程:浏览器会从上到下解析文档。
- 遇见 HTML 标记,调用HTML解析器解析为对应的 token (一个token就是一个标签文本的序列化)并构建 DOM 树(就是一块内存,保存着tokens,建立它们之间的关系)。
- 遇见 style/link 标记调用相应解析器处理CSS标记,并构建出CSS样式树。
- 遇见 script 标记 调用javascript引擎 处理script标记、绑定事件、修改DOM树/CSS树等
- 将 DOM树 与 CSS树 合并成一个渲染树。
- 根据渲染树来渲染,以计算每个节点的几何信息(这一过程需要依赖GPU)。
- 最终将各个节点绘制到屏幕上。
关于css阻塞:
只有link引入的外部css才能够产生阻塞。
关于js阻塞:
阻塞后续DOM解析
阻塞页面渲染
阻塞后续js的执行