Promise 有几种状态?
 三种. pending 初始状态 ; fulfilled 操作成功; rejected 操作失败.
Promise.all 和 Promise.race 的区别?
 相同点: 两个方法都是将多个Promise实例,包装成一个新的Promise实例.
 不同点: Promise.all 接收的实例对象状态都变成fulfilled时,接收一个数组.只要有一个是rejected状态,结果就是第一个rejected的返回值.
 Promise.race 接收第一个率先改变状态的实例的返回值.
1.v-for 为什么使用key?
 为了更加高效的更新虚拟DOM.
 2.v-for 和 v-if 不能一起使用原因?(未知)
 v-for 和 v-if 一起使用时,v-for 具有比 v-if 更高的优先级.
 这意味着v-if 将分别重复运行于每个v-for循环中.带来性能方面的浪费.
 所以不推荐v-if 和 v-for 同事使用.
 3.vue组件中data为什么必须是一个函数?(未知)
 如果data是一个函数的话,这样每复用一次组件,就会返回一份新的data数据.相当于每个组件实例都有自己私有的数据空间,各个组件维护自己的数据,不会造成混乱.而单纯的写成对象的形式,就是所有组件共用了一个data,这样改一个全部修改.
 参考链接:https://blog.csdn.net/nanzhuhe/article/details/105014418
 4.第一次页面加载会触发哪几个钩子?
 beforeCreate, created, beforeMount, mounted
 5.vue-router 有哪几种导航钩子?(未知)
 三种
 全局导航钩子
 router.beforeEach(to, from, next): 路由改变前的钩子
 router.beforeResolve
 router.afterEach : 路由改变后的钩子
 路由独享钩子
 beforeEnter
 组件内的导航钩子
 beforeRouteEnter 在进入当前组件对应的路由前调用
 beforeRouteUpdate 在当前路由改变,但是该组件被复用时调用
 beforeRouteLeave 在离开当前组件对应的路由前调用
 参考链接:https://blog.csdn.net/weixin_43900414/article/details/95441512
 6.vuex有哪几种属性?
 有五种,分别是 State、 Getter、Mutation 、Action、 Module
 state => 基本数据(数据源存放地)
 getters => 从基本数据派生出来的数据
 mutations => 提交更改数据的方法,同步!
 actions => 像一个装饰器,包裹mutations,使之可以异步。
 modules => 模块化Vuex
 7.怎么理解Vue的单向数据流?
 vue中的数据一般是从父组件传到子组件,子组件没有权利修改父组件传递过来的值.
 也就是说子组件从props获取的数据,只能请求父组件修改数据再传给子组件,父级属性值更新会下行流动到子组件.
 8.vue优化?
 源码优化.
 1)代码模块化.重复的代码封装成单独的组件.
 2)v-for循环设置key值
 3)路由懒加载
 4)UI组件按需导入
 打包优化
 9. ES6新增了哪些特性?
 let 关键字
 箭头函数
 字符串模板
 ES6中set集合和Map集合
 Promise规范
 扩展运算符(…) 用于取出参数对象中的所有可遍历属性
 10.forEach 和 map 的区别?
 11.数组去重?
 Set去重
 双重for循环去重
 indexOf/Includes
 filters
 sort
 Map数据结构
 hasOwnProperty
 递归去重
 reduce+includes
 利用对象的属性不能相同的特点进行去重
// Set去重
    Array.form(new Set(arr)) / [...new Set(arr)]
    // 双重for循环去重
    for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.legnth; j++) {
            if (arr[i] == arr[j]) {
                arr.splice(j, 1) // splice() 方法会改变原始数组。
                j--;
            }
        }
    }
    // indexOf / includes 
    for (var i = 0; i < arr.length; i++) {
        if (array.indexOf(arr[i]) === -1) {
            array.push(arr[i])
        }
        if(!array.includes(arr[i])){
            array.push(arr[i])
        }
    }
    // filter
    function unique(arr){
        return arr.filter(function(item,index,arr){
            return arr.indexOf(item,0) == index
        })
    }
   
参考连接:https://segmentfault.com/a/1190000016418021
 12.v-if 和 v-show 的区别?
有没有封装过二次组件?
参考链接:https://www.runoob.com/w3cnote/javascript-promise-object.html










