ES6 memo

1、热门问题

  1. 介绍redux,主要解决什么问题
      是管理应用程序状态的库,解决数据管理和数据通讯的问题
  2. Promise、Async有什么区别
    1. Async 更简洁,不须要用 then 链接
    2. Promise 中不能自定义使用 try/catch 进行错误捕获,可是在 Async/await 中能够像处理同步代码处理错误css

    3. 调试更方便
    4. (Generator 函数能够暂停执行和恢复执行,这是它能封装异步任务的根本缘由)
  3. 介绍react优化
    1. 用 shouldComponentUpdate 避免资源浪费 
    2. 复杂的页面不要在一个组件里面写完。
    3. 请尽可能使用const element
    4. map里面添加key,而且key不要使用index(可变的)。具体可参考使用Perf工具研究React Key对渲染的影响
    5. 尽可能少用setTimeOut或不可控的refs、DOM操做。
    6. propsstate的数据尽量简单明了,扁平化。
    7. 使用return null而不是CSS的display:none来控制节点的显示隐藏。保证同一时间页面的DOM节点尽量的少
  4. HTTP2.0和HTTP1.X相比的新特性
    1. 新的二进制格式,相对文原本说有更强的健壮性
    2. 多路复用(MultiPlexing),即链接共享。一个链接上能够有多个request,一个request对应一个id 。
    3. header压缩:HTTP1.x的header带有大量信息,并且每次都要重复发送,HTTP2.0使用encoder来减小须要传输的header大小,通信双方各自cache一份header fields表,既避免了重复header的传输,又减少了须要传输的大小。
    4. 服务端推送(server push)
  5. 经过什么作到并发请求
    1. 对请求并发数进行限制,而且使用排队机制让请求有序的发送出去
  6. http1.1时如何复用tcp链接
    1. 使用 keep-alive
  7. 介绍service worker
      • 一个独立的 worker 线程,独立于当前网页进程,有本身独立的 worker context。html

      • 一旦被 install,就永远存在,除非被 uninstall前端

      • 须要的时候能够直接唤醒,不须要的时候自动睡眠(有效利用资源,此处有坑)react

      • 可编程拦截代理请求和返回,缓存文件,缓存的文件能够被网页进程取到(包括网络离线状态)css3

      • 能向客户端推送消息编程

      • 不能直接操做 DOM,可是service worker能够经过postMessage与页面之间通讯,把消息通知给页面,若是须要的话,让页面本身去操做DOM。redux

      • 出于安全的考虑,必须在 HTTPS 环境下才能工做数组

      • 异步实现,内部大都是经过 Promise 实现浏览器

  8. 三次握手
    1. 客户端向服务器发送一个 SYN 包,请求创建链接
    2. 服务器收到后会发一个对SYN包的确认包(SYN/ACK)回去
    3. 客户端发送一个确认包(ACK),通知服务器链接已创建
  9. 介绍css3中position:sticky
    1. 父级元素不能有任何overflow:visible觉得的overflow设置,不然没有粘滞效果。由于改变了滚动容器(即便没有出现滚动条)。所以,若是你的position:sticky无效,看看是否是某一个祖先元素设置了overflow:hidden,移除之便可。
    2. 同一个父容器中的sticky元素,若是定位值相等,则会重叠;若是属于不一样父元素,则会鸠占鹊巢,挤开原来的元素,造成依次占位的效果
  10. 浏览器事件流向
    1. “DOM2级事件”规定事件流包括三个阶段,事件捕获阶段、处于目标阶段和事件冒泡阶段。首先发生的事件捕获,为截获事件提供了机会,而后是实际的目标接收了事件,最后一个阶段是冒泡阶段
    2. 注意处于目标阶段的时候,既不是冒泡阶段、也不是捕获阶段,事件处理程序被调用的顺序是注册的顺序
  11. 介绍事件代理以及优缺点
    1. 减小事件注册,节省内存
    2. 减小了dom节点更新的操做,处理逻辑只需在委托元素上进行
    3. 缺点:事件委托基于冒泡,对于onfoucs和onblur等事件不支持;层级过多,冒泡过程当中,可能会被某层阻止掉
  12. React组件中怎么作事件代理
    1. React 本身实现了一套高效的事件注册、存储、分发和重用的逻辑,在 DOM 事件体系基础上作了很大改进。不只减小了内存消耗,最大化解决了 IE 等浏览器的不兼容问题,并且简化了事件逻辑,对开发者来讲很是友好。它有以下的特色:
      • 使用事件委托技术进行事件代理,React 组件上声明的事件最终都转化为 DOM 原生事件,绑定到了 document 这个 DOM 节点上。从而减小了内存开销。
      • 自身实现了一套事件冒泡机制,以队列形式,从触发事件的组件向父组件回溯,调用在 JSX 中绑定的 callback。所以咱们也无法用 event.stopPropagation() 来中止事件传播,应该使用 React 定义的 event.preventDefault()。
      • React 有一套本身的合成事件 SyntheticEvent,而不是单纯的使用 DOM 原生事件,但两者能够平滑转化。
      • React 使用对象池来管理合成事件对象的建立和销毁,这样减小了垃圾的生成和新对象内存的分配,大大提升了性能
  13. React组件事件代理的原理
  14. 前端怎么控制管理路由

   

1、for-of

  • 与 forEach 不一样的是,它能正确响应 break、continue、return 语句
  • 避开了 for-in 循环的缺陷,for-in 是为普通对象设计的, 它会遍历自定义属性,并且你遍历获得的是字符串类型的键,所以不适用于数组遍历
  • 支持不少类型,像数组、类数组对象、字符串、Map 和 Set 对象,但不支持普通对象(这是 for-in 的用处)

2、默认参数

  1.  定义默认值时=后的部分是一个表达式,若是调用者没有传递相应参数,将使用该表达式的值做为参数默认值
  2.  表达式在函数调用时自左向右求值,这一点与Python不一样。这也意味着,默认表达式可使用该参数以前已经填充好的其它参数值
  3.  传递undefined值等效于不传值,没有默认值的参数隐式默认为undefined

3、普通函数和箭头函数的区别

  1.  箭头函数内的this值继承自外围做用域
  2.  箭头函数不会获取它们本身的arguments对象
  3.  使用了块语句的箭头函数不会自动返回值,你须要使用return语句将所需值返回
  4.  当使用箭头函数建立普通对象时,你老是须要将对象包裹在小括号里 
相关文章
相关标签/搜索