每天前端面试五小题

126 阅读3分钟

(1)、v-if和V-show的区别:

v-if是“真正”意义上的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当的被销毁和重建,操作的实际上是dom元素的创建或销毁
而v-show就简单得多,不管初始条件是什么,元素总是会被渲染,并且只是简单的基于css进行切换,它实际操作的是display:block/none属性;

(2)、async await是什么,作用是什么:

async await是es7里面的新语法,它的作用就是async用来申明一个function是异步的,而await用于等待一个异步方法执行完成,它可以很好的替代promise中的then
async函数返回的是一个promise对象,可以使用then方法来添加回调函数,当函数执行时,一旦遇到await就会先返回,等到异步操作完成,在接着执行函数体后面的语句。

(3)、常见的数组方法有那些:

find():用于返回数组中满足提供测试函数的第一个元素的值,否则返回undefined;
findIndex():返回数组中满足提供的测试函数的第一个元素的索引,否则返回-1;
indexOf():通常判断数组中有没有这个元素,不存在返回-1;
join():将一个数组或者一个类数组对象的所有元素连接成一个字符串并返回这个字符串,如果数组只有一个项目,那么将返回该项目而不使用分隔符;
pop():删除数组最后一个元素,并返回该元素的值,此方法改变数组的长度;
push():将一个或多个元素添加到数组的末尾,并返回该数组的新长度;
splice():通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。例如:splice(index,howmany) ——> 删除从index位置开始的数,howmany为删除的个数 ,若 howmany 小于等于 0,则不删除;
shift():删除数组中第一个元素,并返回该元素的值,此方法改变数组的长度;
unshift():将一个或多个远古三添加到数组的开头,并返回该数组的新长度; ......

(4)、数组有哪几种循环方式,以及作用是什么:

forEach():对数组的每一个元素指=执行一次提供的函数;
filter():创建一个新数组,其包含通过所提供函数实现测试的所有元素(过滤),例如: var number=[23,3,51,65,13,45,65,23,63] //此时想取出大于25的数字,返回一个新数组 number.filter( item=>{ return item>25 };
some():测试是否有至少有一个元素可以通过被提供的函数方法,结果是布尔值;
every():测试一个数组内的所有元素是否都能通过某种指定函数的测试,结果也是布尔值。
注意:every()方法不会对空数组进行检测;every()方法不会改变原始数组;应用场景:开关思想,购物车全选。

(5)、v-for为什么要绑定key:

页面上的标签都对应具体的虚拟dom对象,循环中,如果没有唯一key,页面上删除一条标签,由于并不知道删除的是哪一条,所以要把全部的虚拟dom重新渲染,如果有这个key,只需要把渲染的dom为x的标签去掉即可`!`