# 面试记录
# 什么是闭包
- 概念:闭包是能访问其他函数作用域变量的函数
- 创建闭包:一个函数嵌套另一个函数,并返回内部函数
- 作用域:函数内部有一个作用域,函数执行后作用域就会被清理、内存也随之回收,但是闭包拥有访问上级作用域中的变量的权限,即使上级函数执行完后作用域内的值也不会被销毁。
- 闭包解决了什么问题:由于闭包可以缓存上级作用域,使得函数外部打破了“函数作用域”的束缚,可以访问函数内部的变量。
- 应用场景:一个Ajax请求的成功回调,一个事件绑定的回调方法,一个setTimeout的延时回调,或者一个函数内部返回另一个匿名函数
- 缺点:由于闭包会缓存上级作用域的变量,导致无法被垃圾回收机制进行回收,会增加内存的使用,导致内存泄露。
# let与var的区别
- let声明局部变量,var声明全局变量
- var声明的变量存在变量提升,可以在声明前访问到
- let不允许重复声明,var可以
# mvc与mvvm的区别
是两种不同的架构模式,都是为了对业务进行分层,区分职能
- mvc view发送指令到controller,controller完成业务逻辑后改变model状态,model将新的数据发送至view,用户得到反馈。mvc是单向数据流
- mvvm view和viewModel使用数据绑定和事件进行通信,view的变化会自动同步到viewModel,viewModel还公开了model,viewModel上的model和属性通过双向数据绑定进行同步和更新。
#
let var 的区别, mvc,mvvm的区别, 原型,原型链, 两个构造函数实现继承的方式, vue router nginx 要添加什么特殊配置 解决什么问题, 盒模型, promise , ssr, webpack基本配置,hook, vuex,
rudex, 响应式布局实现方式, v-modal实现原理, 虚拟dom树, 箭头函数 普通函数 区别,vue 异步组件, vue key