前端面试
v-if 和v-show有什么区别?
控制手段:v-show隐藏则是为该元素添加css--display:none,dom元素依旧还在。v-if显示隐藏是将dom元素整个添加或删除
编译过程:v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;v-show只是简单的基于css切换
编译条件:v-if是真正的条件渲染,它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。只有渲染条件为假时,并不做操作,直到为真才渲染
v-show 由false变为true的时候不会触发组件的生命周期
v-if由false变为true的时候,触发组件的beforeCreate、create、beforeMount、mounted钩子,由true变为false的时候触发组件的beforeDestory、destoryed方法
性能消耗:v-if有更高的切换消耗;v-show有更高的初始渲染消耗。
async await 是什么?它有哪些作用?
async / await 是一种建立在Promise之上的编写异步或阻塞代码的新方法,被普遍认为是js一步操作的最终且最优雅的解决方案。
相对于Promise和回调,它的可读性和简洁度都更高。一直.then()也不好看。
优缺点:
相比于Promise,async/await能更好的处理then链
await关键字只能在async function中使用,在任何非async function的函数中使用await关键字都会抛出错误。await关键字在执行下一行代码之前 等待右侧表达式(可能是一个Promise)返回。
async/await的优势在于处理then的调用链,能够更清晰准确的写出代码,并且也能解决回调地狱的问题。当然也存在一些缺点,因为await将异步代码改造成了同步代码,如果多个异步代码没有依赖性却使用了await会导致性能上的降低。
常用的数组方法有哪些?
1. push() 向数组中添加数据
2. pop() 删除数组中的最后一个数据
3. unshift() 向数组中最前面添加数据
4. shift() 删除数组中的第 0 个数据
5. concat() 对数组进行拼接
6. splice() 对数组进行截取
7. slice() 截取数组中的值
8. sort() 数组排序
9. reverse() 反转数组
10. join() 把数组链接成一个字符串
数组有哪几种循环方式?分别有什么作用?
1.forEach
对数组的每个元素执行一次提供的函数。
2.map 需要return返回 返回一个新数组
3.filter 过滤循环
创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
4.reduce
5.every 循环,每个都符合返回true,否则返回false
测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
6.some 循环,有一个符合返回true,否则返回false
测试是否至少有一个元素可以通过被提供的函数方法。该方法返回一个Boolean类型的值。
常用的字符串方法有哪些?
charAt() 方法从一个字符串中返回指定的字符。
concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。
includes() 方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。
indexOf() 方法返回调用它的 String 对象中第一次出现的指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1。
match() 方法检索返回一个字符串匹配正则表达式的的结果。
padStart() 方法用另一个字符串填充当前字符串(重复,如果需要的话),以便产生的字符串达到给定的长度。填充从当前字符串的开始(左侧)应用的。 (常用于时间补0)
replace() 方法返回一个由替换值(replacement)替换一些或所有匹配的模式(pattern)后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。
原字符串不会改变。
slice() 方法提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串。
**split()**方法使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。
**substr()** 方法返回一个字符串中从指定位置开始到指定字符数的字符。
trim() 方***从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR)。
什么是原型链?
每一个实例对象上有一个proto属性,指向的构造函数的原型对象,构造函数的原型
对象也是一个对象,也有proto属性,这样一层一层往上找的过程就形成了原型链。
#前端#