记录一些面试中自己没有回答好的问题

被面试虐待之后,发现自己对一些问题了解的不够深入,或者明明会用,但是说不出来,明明自己写的项目却没办法把思路/流程讲明白,还有之前就直接放弃去了解的继承/对原理的深入等等,以后想到了就会尽量把它们整理记录下来
  1. 工作中有哪些实际的场景可以用到闭包?

    • 闭包:一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起 ——来自MDN(词法环境:根据这个变量的位置来判断它能在哪里使用)
    • 解决的问题/使用的目的:在函数内部使用函数外部数据,解决了js没有私有变量的问题
    • 回归正题:只要需要私有变量的地方都可以使用闭包,比如防抖节流函数的实现就是用到了闭包,还有开发插件等等,应用场景非常广泛
    • 思维扩展:之前看函数柯里化的时候,一直处于一知半解的状态,这里重新做一下整理

      • 固定参数的实现(直接使用闭包,多个参数往下无限写function即可):
        记录一些面试中自己没有回答好的问题_第1张图片
      • 但实际使用中,参数经常不固定,不固定参数的实现:
        记录一些面试中自己没有回答好的问题_第2张图片
      • 必须要调用一次空的,好像有点奇怪(之前看别人的实现都是使用toString,不太清楚为什么toString可以判断是不是该返回结果?于是自己试了一下,toString是真的不行,除非手动给函数包一层String……)
        记录一些面试中自己没有回答好的问题_第3张图片
      • 啊,第一个问题就写了好久,查资料的时候看见别人博客的动画好有意思……然后……就跑偏了……ORZ
  2. Axios和Ajax的区别?

    • Ajax是基于XHR的封装,依赖于JQuery
    • Axios也是基于XHR封装,但是是使用Promise实现的
    • Axios更便捷,不依赖于任何框架
  3. Asyc Await是怎么进行错误拦截的

    • try/catch
  4. 异步的发展进程?

    • 回调(事件回调/AJAX)(回调地狱)
    • Promise
    • Generator/yield (难以理解)
    • Async/Await
  5. VUE中$nextTick的使用场景和实现原理?

    • 在dom更新完成之后执行的一个回调
    • 实现原理:TODO
  6. 继承与原型链

    • prototype和__proto__的区别

      • __proto__指向prototype
      • 每个对象创建之后都会有一个__proto__
      • prototype是函数的内置属性
      • __proto__是对象的内置属性
    • 所有的js对象都是Object的实例,继承了Object.prototype的属性和方法

...未完待续

你可能感兴趣的:(面试问题前端)