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

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

      • 固定参数的实现(直接使用闭包,多个参数往下无限写function即可):
        image.png
      • 但实际使用中,参数经常不固定,不固定参数的实现:
        image.png
      • 必须要调用一次空的,好像有点奇怪(之前看别人的实现都是使用toString,不太清楚为什么toString可以判断是不是该返回结果?于是自己试了一下,toString是真的不行,除非手动给函数包一层String……,可以在这里尝试)
        image.png
      • 啊,第一个问题就写了好久,查资料的时候看见别人博客的动画好有意思……然后……就跑偏了……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的属性和方法
    • 实现一个继承 // TODO
  7. 实现一个简单的双向绑定(就只用了defineProperty)
    image.png
  8. 防抖/节流(这个我写出来了!但是因为是个高频问题,也记录一下吧~)
    image.png

...未完待续

...欢迎指正


himushroom
1.5k 声望169 粉丝

溪水慢慢流淌