节流: n 秒内只运行一次,若在 n 秒内重复触发,只有一次收效
防抖: n 秒后在实验该事故,若在 n 秒内被重复触发,则重新计时
本质上是优化高频率实验代码的一种手段,须要对这类事故举行调用次数的限制 二、区别 相同点:
都可以通过利用 setTimeout 实现
目的都是,降低回调实验频率。节流盘算资源 差异点:
函数防抖,在一段一连操纵竣事后,处理处罚回调,利用clearTimeout和 setTimeout实现。函数节流,在一段一连操纵中,每一段时间只实验一次,频率较高的事故中利用来进步性能
函数防抖关注肯定时间一连触发的事故,只在末了实验一次,而函数节流一段时间内只实验一次
17.如何通过JS判定一个数组
1.通过instanceof判定
let a = [];
a instanceofArray;//true 2.通过constructor判定
我们知道,实例的构造函数属性constructor指向构造函数,那么通过constructor属性也可以判定是否为一个数组。
let a = [1,3,4];
a.constructor === Array;//true 3.通过Object.prototype.toString.call()判定
Object.prototype.toString().call()可以获取到对象的差异范例,比方
let a = [1,2,3]
Object.prototype.toString.call(a) === '[object Array]';//true 4.通过Array.isArray()判定
Array.isArray() 用于确定转达的值是否是一个数组,返回一个布尔值。
let a = [1,2,3]
Array.isArray(a);//true
18.说说你对作用域链的明白
一、是什么
在JavaScript中,new操纵符用于创建一个给定构造函数的实例对象
从上面可以看到:
new 通过构造函数 Person 创建出来的实例可以访问到构造函数中的属性
new 通过构造函数 Person 创建出来的实例可以访问到构造函数原型链中的属性(即实例与构造函数通过原型链毗连了起来) 二、流程
从上面先容中,我们可以看到new关键字告急做了以下的工作:
创建一个新的对象obj
将对象与构建函数通过原型链毗连起来
将构建函数中的this绑定到新建的对象obj上
根据构建函数返回范例作判定,假如是原始值则被忽略,假如是返回对象,须要正常处理处罚
23.null,undefined 的区别
一、是什么
Real DOM,真实 DOM,意思为文档对象模子,是一个布局化文本的抽象,在页面渲染出的每一个结点都是一个真实 DOM 布局,如下:
Virtual Dom,本质上是以 JavaScript 对象情势存在的对 DOM 的形貌
创建假造 DOM 目的就是为了更好将假造的节点渲染到页面视图中,假造 DOM 对象的节点与真实 DOM 的属性逐一照应 利用假造 DOM 的上风如下:
简单方便:假如利用手动操纵真实 DOM 来完成页面,繁琐又轻易堕落,在大规模应用下维护起来也很困难
性能方面:利用 Virtual DOM,可以或许有效制止真实 DOM 数频仍更新,镌汰多次引起重绘与回流,进步性能
跨平台:React 借助假造 DOM,带来了跨平台的本事,一套代码多端运行 两者的区别如下:
假造 DOM 不会举行排版与重绘操纵,而真实 DOM 会频仍重排与重绘
假造 DOM 的总斲丧是“假造 DOM 增编削+真实 DOM 差异增编削+排版与重绘”,真实 DOM 的总斲丧是“真实 DOM 完全增编削+排版与重绘”
45.Vue3.0的计划目的是什么?做了哪些优化
更小:
Vue3移除一些不常用的 API
引入tree-shaking,可以将无用模块“剪辑”,仅打包须要的,使打包的团体体积变小了 更快:
告急体如今编译方面:
diff算法优化
静态提升
事故监听缓存
SSR优化 更友好
vue3在分身vue2的options API的同时还推出了composition API,大大增长了代码的逻辑构造和代码复用本事 TypeScript支持:
Vue3是基于typeScript编写的,提供了更好的范例查抄,能支持复杂的范例推导 API计划划一性:
语法 API
这里固然说的就是composition API,其两大显着的优化:
优化逻辑构造
优化逻辑复用
进步自身可维护性
开放更多底层功能
46.Vue3.0 所接纳的 Composition Api 与 Vue2.x 利用的 Options Api 有什么差异?
通常利用Vue2开辟的项目,广泛会存在以下标题:
代码的可读性随着组件变大而变差
每一种代码复用的方式,都存在缺点
TypeScript支持有限
然而,当组件变得复杂,导致对应属性的列表也会增长,这大概会导致组件难以阅读和明白 Composition Api
在 Vue3 Composition API 中,组件根据逻辑功能来构造的,一个功能所界说的全部 API 会放在一起(更加的高内聚,低耦合)
纵然项目很大,功能很多,我们都能快速的定位到这个功能所用到的全部 API 三、对比
下面对Composition Api与Options Api举行两大方面的比力 逻辑构造 逻辑复用 逻辑构造: Options API
可以看到,这种碎片化使得明白和维护复杂组件变得困难
选项的分离粉饰了潜在的逻辑标题。别的,在处理处罚单个逻辑关注点时,我们必须不绝地“跳转”相干代码的选项块 #Compostion API
而Compositon API正是办理上述标题,将某个逻辑关注点相干的代码全都放在一个函数里,如许当须要修改一个功能时,就不再须要在文件中跳来跳去
下面举个简单例子,将处理处罚count属性相干的代码放在同一个函数了 逻辑复用
利用单个mixin好像标题不大,但是当我们一个组件混入大量差异的 mixins 的时间
会存在两个非常显着的标题:
定名冲突
数据泉源不清楚 小结
在逻辑构造和逻辑复用方面,Composition API是优于Options API
由于Composition API险些是函数,会有更好的范例推断。
Composition API对 tree-shaking 友好,代码也更轻易压缩
Composition API中见不到this的利用,镌汰了this指向不明的情况
假如是小型组件,可以继续利用Options API,也优劣常友好的
47.说一下Vue数据响应式的原理
一、是什么
Real DOM,真实 DOM,意思为文档对象模子,是一个布局化文本的抽象,在页面渲染出的每一个结点都是一个真实 DOM 布局,如下:
Virtual Dom,本质上是以 JavaScript 对象情势存在的对 DOM 的形貌
创建假造 DOM 目的就是为了更好将假造的节点渲染到页面视图中,假造 DOM 对象的节点与真实 DOM 的属性逐一照应 二、区别
两者的区别如下:
假造 DOM 不会举行排版与重绘操纵,而真实 DOM 会频仍重排与重绘
假造 DOM 的总斲丧是“假造 DOM 增编削+真实 DOM 差异增编削+排版与重绘”,真实 DOM 的总斲丧是“真实 DOM 完全增编削+排版与重绘” 三、优缺点
真实 DOM 的上风:易用
缺点:
服从低,剖析速度慢,内存占用量过高
性能差:频仍操纵真实 DOM,易于导致重绘与回流
利用假造 DOM 的上风如下:
简单方便:假如利用手动操纵真实 DOM 来完成页面,繁琐又轻易堕落,在大规模应用下维护起来也很困难
性能方面:利用 Virtual DOM,可以或许有效制止真实 DOM 数频仍更新,镌汰多次引起重绘与回流,进步性能
跨平台:React 借助假造 DOM,带来了跨平台的本事,一套代码多端运行
缺点:
在一些性能要求极高的应用中假造 DOM 无法举行针对性的极致优化
首次渲染大量 DOM 时,由于多了一层假造 DOM 的盘算,速度比正常稍慢
50.说说React 生命周期有哪些差异阶段?每个阶段对应的方法是?