1、promise 与 async-await 有什么区别?
解答:
- promise 是一个异步编程的解决方案,也是一个对象。提高了代码可读性,有效解决了**回调地狱问题,**它可以链式调用。
- async 的用法,它作为一个关键字放到函数前面, 调用该函数会返回一个 promise 对象,await 关键字只能放到 async 函数里面,await 是等待的意思。其实它后面可以放任何表达式,不过我们更多的是放一个返回 promise 对象的表达式,它等待的是 promise 对象的执行完毕,并返回结果。该promise的reosolve值就是函数return的值。(示例中reosolve值就是字符串”done”)
- promise有三种状态
1、reosolve:意味着操作成功完成。 还有个名称叫fulfilled;
2、rejected:意味着操作失败;
3、pending: 初始状态;
2、vue template 怎么理解
解答:
-
简捷明了的回答: vue template是用来声明虚拟dom的标签模版,相对于render函数 template是用来渲染虚拟dom的标签模版
vue 的模版语法,是一种形象描述视图的标记语言,在通过 vue 的 vue-template-compiler 解析成 render 函数,通过 vnode 加上 diff 算法统一替换 dom 形成真实视图,所以 vue 和 react 在本质上类似,也就是说 vue 可以和 react 一样通过 jsx 来描绘视图,不同的是 vue 提供了一套更符合前端思维的标记语言
3、路由传参
-
this.$router.push 进行编程式路由跳转
-
router-link 进行页面按钮式路由跳转
-
this.$router.params 获取路由传递参数
-
this.$route.quert 获取路由传递参数
-
params query 都是传递参数的,params 不会在 URL 上出现,params 参数是路由的一部分,一定要存在的 query 是我们通常看到的 URL 后边的?后面显示的参数
4、移动端 1 px 遇到过嘛 你是如何解决的
解决:
-
第一种 :只要关于1px 的设置 一般类似于给border 设置 都用 PX 不识别
-
第二种 :使用子绝父相 给子元素设置transform:scale (0.5)进行缩放一半
分为两种: 假设给上边框设置就是 transform:scale Y(0.5)
以及给全部的边框设置就是 transform:scale (0.5) -
第三种 : 就是引用 less 喝 sass 库
以上三种都可以解决这个问题
5、数组去重 文档
1、双重for循环
使用方法: 双层循环,外层循环元素,内层循环时比较值。值相同时,然后splice 删去这个值。
注意事项: 在第二层最后面设置 => j - - 防止数组塌陷
function unique(arr){
for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
if(arr[i]==arr[j]){
//第一个等同于第二个,splice方法删除第二个
arr.splice(j,1);
j--;
}
}
}
return arr;
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null,
NaN, NaN,'NaN', 0, 0, 'a', 'a',{
},{
}];
console.log(unique(arr)