-
JS内存回收机制
1. 回收对象:没有引用,无法访问的对象,比如:
let a = {name:"zhangsan"},
a = 1,
那么当 a = 1 的时候,开始赋值的对象失去了变量引用它,这个对象的内存就会成为被内存回收的对象
2. 如何回收:
- 有手动释放内存和自动的内存管理回收
- 自动的内存管理会周期性判别没有引用的内存自动释放
- 一般的回收机制采用 标记清除 / 引用计数
- 标记清除:变量进入使用环境时进行标记,离开使用环境后标记为准备删除的变量,下一个回收周期时进行释放
- 引用计数:一个内存地址被几个变量引用几次就记引用几次,内存地址引用次数到0,下一个回收周期就回收该内存
3. 内存泄漏:不再使用的内存,没有及时释放,就叫内存泄漏
4. 内存泄漏避免:
- 不滥用闭包
- 养成主动释放内存的编码习惯
- 不要给变量赋值了却没有使用到该变量
-
promise是什么?能解决什么问题?
1. 概念:一种异步编程的解决方案
2. 特点:
- 有两个参数,resolve和reject
- 成功状态调用resolve,反之调用reject
- promise解除了pending状态后只会得到resolve或者 reject,回调结果只能是二者中的一个
3. 解决的问题:
- 解决回调地狱
-
float和absolute有什么区别?
float:其他盒子会无视带有float属性的元素,但其他盒子内的文本会为这个带有float属性的元素让出位置
absolute:它会寻找一个带有relative的元素作为参照元素,没找到则以body为参考对象,在这个参照元素的左上角为坐标原点进行定位,其他的元素或文本都会无视它
-
cookie和session有什么联系?
1. 都携带用户信息,cookie数据放在客户端,session放在服务端
2. cookie的安全性相比session更低
-
vue如何实现双向数据绑定?
1. 数据监听
2. 接收数据变化的信息执行相应功能函数
3. 更新视图
这道题我真不知道怎么讲,这题大概是要讲讲源码层面的事?看各种解答总觉得看了个寂寞
-
vue父组件子组件通信?
父子:props
子父:发射自定义事件
-
图片预加载和懒加载?
预加载:在显示要显示的图片之前加载好图片
预加载方法:
- 使用css背景图片
- ajax
- 用js创建图片
懒加载:需要显示就加载,暂时不需要就等待要显示的时候
懒加载方法:
- 定时器或计时器
- 条件加载
- 可视区域加载
-
MVVM和MVC区别?
- MVVM 实现了 view 和 model 的数据同步
- MVC 是 MVVM 模型的基础
- MVC 更关注C,即控制
- MVVM 更关注V,即视图
-
vue删除数据监测不到?
- 未使用vue支持的响应式操作方法
-
编程:连接两个数组并返回?
- 使用三点运算
let arr = [...arr1,...arr2]
- concat()
let arr = arr1.concat(arr2)
- apply()
arr1.push.apply(arr1,arr2)
- for 循环编程合并数组