前端面试整理之闭包和虚拟Dom

129 阅读1分钟

闭包

关于闭包,是很多编程语言中都提到而且支持的概念。很多文档资料中对于闭包的形容都是晦涩艰深的。结合这我个人与我查看的资料来讲,闭包就是能读取其他函数内部变量的函数。

个人理解

那么在Js中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数“。

闭包的使用

闭包的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在使用闭包的子函数的父函数调用后被自动清除。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

虚拟Dom

虚拟Dom,顾名思义,是相对于浏览器渲染出Dom而言的

使用虚拟Dom的原因

在vue以及react等技术出现之前,我们要改变页面展示的内容只能通过遍历查询 dom 树的方式找到需要修改的 dom 然后修改样式行为或者结构,来达到更新 ui 的目的。然而这种方法过于消耗计算资源,因为每次查询 dom 几乎都需要遍历整颗 dom 树,如果 建立一个与 dom 树对应的虚拟 dom 对象( js 对象),以对象嵌套的方式来表示 dom 树,那么每次 dom 的更改就变成了 js 对象的属性的更改,这样一来就能查找 js 对象 的属性变化要比查询 dom 树的性能开销小。