前端高级面试题及答案

1.下面选打印的结果为?



hello

2

2

2. 请说出以下打印的结果

   var b = {

    a: 23,

    c: 3,

    d: {

        a: 78,

        e: {

            a: 100,

            f: function () {

                console.log(this.a);

            }

        }

    }

}

var fn = b.d.e.f;

fn(); 

b.d.e.f(); 

Undefined

100

3.

 // 修改$对象里面的代码,使得以下代码运行正常

    var $ = {

        fn: function () {

            console.log(1);

        },

        fn2: function () {

            console.log(2);

        }

}

$.fn2();

    $.fn().fn2();


var $ = {    fn:function(){        console.log(1);        // return this; // 返回this,可以继续调用函数    },    fn2:function(){        console.log(2);    }},$.fn().fn2();



4.说出种vue当中的指令和它的用法?     

1.创v-for循环;建了一个空对象

2.   v-if v-show 显示与隐藏;构造函数内部的属性和方法定义在了对rototype



5.打印的结果为  

var  length = 10;

function fn(){

         console.log(this);

        console.log(this.length);

          }

    var obj = {

        length:5,

        method: function(fn){

        fn();

        console.log(this.length);

        arguments[0]();//提示  arguments0 这句代码 arguments是一个数组,里面存储了所有的参数。在本例中,method方法被调用时,传入了两个参数,一个是fn,一个是数字1 因此,arguments[0]即代表fn又因为,数组是特殊的对象,下标即是特殊的属性名那么arguments0其实等价于: arguments.0();最终,this.length,就等于arguments.length  那么结果为


        }

    }

    obj.method(fn,1);


Window, 10, 5

Arguments(2), 2, 


6.以下执行的结果

const promise = new Promise((resolve, reject) => {

    console.log(1);

    resolve();

    console.log(2);

})


promise.then(() => {

    console.log(3);

})


console.log(4);



Promise 新建后立即执行,所以会先输出 1,2,而 Promise.then()内部的代码在 当次 事件循环的 结尾 立刻执行 ,所以会继续输出4,最后输出3

7.Promise 中reject 和 catch 处理上有什么区别

reject 是用来抛出异常,catch 是用来处理异常reject 是 Promise 的方法,而 catch 是 Promise 实例的方法reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch网络异常(比如断网),会直接进入catch而不会进入then的第二个回调



8.谈谈你对async/await的理解

[if !supportLists]1. [endif]await命令只能用在async函数之中,如果用在普通函数,会报错

[if !supportLists]2. [endif]async函数的返回值是 Promise 对象更方便使用当async 函数中只要一个 await 出现 reject 状态,则后面的 await 都不会被执行,可以添加 try/catch来捕获异常

[if !supportLists]9. [endif]v-show和v-if指令的共同点和不同点?

共同点:都能控制元素的显示和隐藏;不同点:实现本质方法不同,v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v-if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。而且v-if不停的销毁和创建比较消耗性能。总结:如果要频繁切换某节点,使用v-show(切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用v-if(初始渲染开销较小,切换开销比较大)。


[if !supportLists]10. [endif]v-if和v-for的优先级

当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中。所以,不推荐v-if和v-for同时使用。如果v-if和v-for一起用的话,vue中的的会自动提示v-if应该放到外层去。



扩展、使用class 手写一个promise

//创建一个Promise的类

    class Promise {

        constructor(executer) {//构造函数constructor里面是个执行器

            this.status = 'pending';//默认的状态 pending

            this.value = undefined//成功的值默认undefined

            this.reason = undefined//失败的值默认undefined

            //状态只有在pending时候才能改变

            let resolveFn = value => {

                //判断只有等待时才能resolve成功

                if (this.status == pending) {

                    this.status = 'resolve';

                    this.value = value;

                }

            }

            //判断只有等待时才能reject失败

            let rejectFn = reason => {

                if (this.status == pending) {

                    this.status = 'reject';

                    this.reason = reason;

                }

            }

            try {

                //把resolve和reject两个函数传给执行器executer

                executer(resolve, reject);

            } catch (e) {

                reject(e);//失败的话进catch

            }

        }

        then(onFufilled, onReject) {

            //如果状态成功调用onFufilled

            if (this.status = 'resolve') {

                onFufilled(this.value);

            }

            //如果状态失败调用onReject

            if (this.status = 'reject') {

                onReject(this.reason);

            }

        }

    }

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容