前端面试题

137 阅读5分钟

vue中生命周期有哪些

vue中实例从创建到销毁的过程则就是vue的生命周期

vue的生命周期常见的主要分为4个阶段和8钩子函数,另外的三个生命周期函数不怎么常用,

keep-alive是组件缓存,保留组件的状态,避免重新渲染

activated只有在keep-alive组件时激活调用

deactivated只有在keep-alive组件停用时调用

errorCapured 当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播。

阶段一:vue实例创建前/后

1.在beforeCreate生命周期函数执行的时候,则data和method 还没有进行创建,所以无法访问data中数据
2.在created 生命周期函数执行的时候,data和method已经完成了创建,可以访问里面的数据
应用场景:一般用来发送ajax请求,因为可以最快的获取到数据

阶段二:挂载前/后 -- 也可以说渲染前/后

1.在beforMount生命周期函数执行的时候,这个时候数据还没有真正的渲染到页面上去,也就是还没有完成挂载
2.mounted生命周期函数执行的时候,页面已经渲染完成,可以获取到页面中的数据
应用场景:一般用来在这个函数内使用后ref来访问DOM元素

阶段三:数据更新前/后

1.在beforupdate生命周期函数执行的时候,在我们更新数据的时候,其实可以访问的到更新后后的数据,但是最新的数据没有渲染到页面上
2.在updated生命周期函数执行的时候,已经将更新后的数据渲染到页面上去了,也可以访问的到页面上更新后的数据

阶段四:销毁前/后

1.在beforDestroy生命周期函数执行的时候,实例进入准备销毁的阶段,此时data,methods,指令等还是可以使用的状
态
2.在destroy生命周期函数执行的时候,实例已经完全的销毁了,此时data,method,指令都已经不能使用了

v-if和v-show的区别

1.共同点:都是可以通过条件来渲染数据
2.不同点:v-if是通过判断条件在页面上添加元素或者是删除元素。v-show:也是通过条件来判断,但是它最终都会被渲染到页面上,只不过是v-show是控制了css样式,设置了display属性,条件成立则显示在页面上,则添加display:block,条件不成立,则隐藏,display值为none
更具需求来选择v-if还是v-show,如果是频繁的切换一个位置,则应该用到v-show

常用的数组方法有哪些

1.concat()方法用于合并两个或者多个数组。它不会更好现有的数组,而是返回的是一个新数组
2.findIndex()方法返回数组中满足条件的则返回当前那个元素的索引,否则返回-1
3.includes()方法来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回true,否则false
4.indexOf()方法用来判断一个数组是否包含了一个指定的值,根据情况,如果包含则返回true,否则返回false
5.join()方法将一个数组(或者一个类数组对象)的所有元素拼接成一个字符串返回这个字符串
6.pop()方法将从数组中删除最后一个元素,并返回该元素的值,此方法更改数组长度
7shift()方法从数组中删除第一个元素,并返回该元素的值,此方法更改数组的长度
8.push()方法将一个或者多个元素添加到数组的末尾,并返回该数组的长度
9.unshift()方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有的数组)
10.splice()方法通过删除或者替换现有的元素或者原地添加新的元素来修改数组,并返回的被修改的内容,此方法回改变原数组
11.reverse()方法将数组中元素的位置颠倒,并返回该数组
12.sort()方法用原地算法对数组的元素进行排序,并返回数组,默认排序顺序是在将元素转为字符串,然后比较它们UTF-16代码单元值序列时构建

数组有哪几种循环方式,分别有啥作用

1.every()方法是来判断此时数组内是否所有元素都满足条件,它返回的是一个布尔值--开关思想
2.filter()方法用来筛选数组,将满足条件的元素筛选出来放入新数组,不满足条件的则就不放入新数组,返回值布尔值
3.forEach()方法对数组进行遍历,对数组每一个元素进行遍历,同等于for循环
4.findIndex()方法用来获取元素当前索引值,通过条件来判断,如果条件成立则返回当前元素的索引值

什么是原型链

1.每一个实例对象身上都有一个proto属性,指向的构造函数的原型对象,而构造函数的原型对象也是对象,也有一个proto属性,这样一层一层的往上找的过程则就是原型链

什么是闭包,有哪些缺点

1.闭包是一个作用域可以访问另一个函数作用域中变量的函数,简单理解就是一个作用域可以访问另一个作用域中的局部变量
2.作用:延长变量的作用域,在函数的外部可以访问函数内部的局部变量容易造成内层泄漏,因为闭包中的局部变量永远不会被回收