百度日常一面

除项目外的提问:

介绍一下ES6+在项目中的一些使用:Promise Async Await Map对象,数组方法

介绍一下原型链:是JS提供的一套基于原型的继承机制,在继承的过程中如果在某个对象找不到其方法,会沿着原型链往上找方法,如果一直找到null都没有找到的话,就会报错说明not a function。每个对象都有其原型方法,比如Array Function Object等,在原型方法上的方法可以被所有对象所使用,原型链的尽头是null。

题目:

function A(){    Function.prototype.a = function(){        console.log("a");    }    Object.prototype.b = function(){        console.log("b");    }}​var a = new A();a.a();a.b();

new出来的是个对象,所以可以访问b方法不能访问a方法,会报错 a is not a function。

讲讲Promise:Promise是为了解决之前的回调地狱的情况出现的,使用.then .catch .finally等方法解决了回调地狱,变成一步一步的解决,但是其仍旧有自己的问题,当Promise中间连续调用.then .catch的方法的时候,可读性会下降,可维护性也会下降,比如今天一串的then方法中间某一步出问题了很难调试,所以有了Async Await

讲讲Async Await:Async Await实际上是promise的一个语法糖,并不是底层的重构,但是它允许我们像同步一样书写异步代码,这里就首先增强了可读性,第二增加了可调试性。

题目:

console.log(5);
try{    new Promise((resolve,reject)=>{        console.log(1);        
reject("error");    }).catch((err)=>{        console.log(2);    })}
catch(e){    console.log(3);}console.log(6);

答案:5126

为什么没有3?因为在Promise中的错误不可以被trycatch捕获。

PromiseAll是串行还是并行?如果是并行如何保证结果数组和传入数组的顺序一致性?是并行的,在用for迭代传入数组的时候给它们一个idx在回调的时候根据这个idx把它们放回去。

实现一个容器左边是图片右边是名字和定价然后垂直对齐

    .box{        display: flex;    }    
	.img{        width: 100px;        background-color: red;    }    
	.text{        flex:1;        flex-direction: column;        justify-content: center;    }

Css实现垂直居中:

绝对定位,flex,grid,边框计算,table

全部评论

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务