闭包
最简单的概念,
闭包就是函数嵌套函数,内部函数就是一个闭包,
内部函数只可以在外部函数中访问
它可以访问外部函数的参数和变量,但是外部函数却不能使用它的参数和变量
为什么会输出10呢,是因为闭包这个函数是a可以访问外部函数的参数和变量,
但是问题来了
众所周知,正常情况下函数执行完成后,其内部变量会随之销毁,
那么闭包呢?,我们可以清晰看见
外部函数在这一步已经执行完毕,照理来说函数一旦执行完毕后,其内部变量也会随之销毁
但是我们可以清晰看到后面的c()仍然可以获取外部函数里面的变量a
这就是闭包的一个很重要的特性,内部函数未执行完毕,则外部函数不会销毁
虚拟dom
一、什么是虚拟DOM
虚拟dom本质上就是一个普通的JS对象,用于描述视图的界面结构
二、为什么需要虚拟DOM
DOM是很慢的,其元素非常庞大,页面的性能问题,大部分都是由DOM操作引起的
你用传统的原生api或jQuery去操作DOM时,浏览器会从构建DOM树开始从头到尾执行一遍流程
当你在一次操作时,需要更新10个DOM节点,浏览器没这么智能,收到第一个更新DOM请求后,并不知道后续还有9次更新操作,因此会马上执行流程,最终执行10次流程
而通过VNode,同样更新10个DOM节点,虚拟DOM不会立即操作DOM,而是将这10次更新的diff内容保存到本地的一个js对象中,最终将这个js对象一次性attach到DOM树上,避免大量的无谓计算