前端—每天5道面试题(4)

每天背5道前端面试题,希望我可以在远方的终点见到你


1、写 React / Vue 项目时为什么要在列表组件中写 key, 其作用是什么?
key 是给每一个 vnode 的唯一 id,可以依靠 key,更准确,更快的拿到 oldVnode 中对 应的 vnode 节点。

2、介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

  • Set——对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

  • WeakSet——成员都是对象;成员都是弱引用,可以被垃圾回收机制回收,可以 用来保存 DOM 节点,不容易造成内存泄漏。

  • Map——本质上是键值对的集合,类似集合;可以遍历,方法很多,可以跟各 种数据格式转换。

  • WeakMap——只接受对象最为键名(null 除外),不接受其他类型的值作为键
    名;键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收, 此时键名是无效的;不能遍历,方法有 get、set、has、delete。

3、请分别用深度优先思想和广度优先思想实现一个拷贝函数?


4、Async/Await 如何通过同步的方式实现异步的?

  • async 起什么作用——输出的是一个 Promise 对象

5、简述一下JS 异步解决方案的发展历程以及优缺点

1、回调函数(callback) 优点:解决了同步的问题(只要有一个任务耗时很长,后面的任务都必须排队 等着,会拖延整个程序的执行。) 缺点:回调地狱,不能用 try catch 捕获错误,不能 return 。

2、Promise 优点:解决了回调地狱的问题 缺点:无法取消 Promise ,错误需要通过回调函数来捕获。

3、Generator 特点:可以控制函数的执行,可以配合 co 函数库使用 。

4、Async/await 优点:代码清晰,不用像 Promise 写一大堆 then 链,处理了回调地狱的问题 缺点:await 将异步代码改造成同步代码,如果多个异步操作没有依赖性而使 用 await 会导致性能上的降低。

前端—每天5道面试题(4)相关推荐

  1. 前端—每天5道面试题(十三)

    前端-每天5道面试题(十三) 一.display:none:和visibilty:hidden ;和opacity:0:和overflow:hidden的区别? display:none:隐藏自己,隐 ...

  2. 前端—每天5道面试题(十二)

    前端-每天5道面试题(十二) 每天进步1% 不多 就1% 一.CSS3 新特性有哪些 1.颜色:新增 RGBA,HSLA 模式 2. 文字阴影(text-shadow.) 3.边框: 圆角(borde ...

  3. 前端—每天5道面试题(十一)

    前端-每天5道面试题(十一) 每天进步1% 不多 就1% 一.简述对 Web 语义化的理解? 就是让浏览器更好的读懂你写的代码,在进行 HTML 结构.表现.行为设计时,尽量使用语义化的标签,使程序代 ...

  4. 前端—每天5道面试题(十)

    前端-每天5道面试题(十) 每天进步1% 不多 就1% 一.用 div+css 布局的好处? 表现和内容相分离 将设计部分剥离出来放在一个独立样式文件中,HTML 文件中只存放文本信息. 提高搜索引擎 ...

  5. 前端—每天5道面试题(九)

    前端-每天5道面试题(九) 每天进步1% 不多 就1% 一.overflow 有哪些属性值? Visible:默认值,内容不会被修剪,会呈现在元素框之外. Hidden:内容会被修剪,并且其余内容是不 ...

  6. 前端—每天5道面试题(8)

    前端-每天5道面试题(8) 每天背5道前端面试题,你会越来越优秀 1.console.log 是同步还是异步? 如何实现 一个 console.log? console.log 内部实现的是 proc ...

  7. 前端—每天5道面试题(7)

    前端-每天5道面试题(7) 每天背5道前端面试题,你会越来越优秀 1.webpack 中 loader 和 plugin 的区别是什么? loader:loader 是一个转换器,将 A 文件进行编译 ...

  8. 前端—每天5道面试题(6)

    前端-每天5道面试题(6) 每天背5道前端面试题,希望我可以在远方的终点见到你 1.谈谈JS 异步解决方案的发展历程以及优缺点. 1.回调函数(callback) 优点:解决了同步的问题(只要有一个任 ...

  9. 前端—每天5道面试题(5)

    前端-每天5道面试题(5) 每天背5道前端面试题,希望我可以在远方的终点见到你 1.简述一下前端的性能优化问题 (一).页面内容方面 通过文件合并.css 雪碧图.使用 base64 等方式来减少 H ...

最新文章

  1. 多人VR游戏或成未来VR游戏发展的爆点
  2. 通过自动回复机器人学Mybatis---加强版
  3. MySQL----联结
  4. MYSQL性能调优及架构设计学习笔记-基础篇MYSQL架构组成
  5. 服务器登陆密码到期登不上去_英雄联盟手游注册系统炸服怎么回事?服务器瘫痪登不上解决方法[多图]...
  6. python循环输入字典_python - 使用'for'循环迭代字典
  7. 用Adapter模式重构以前系统的登录权限验证
  8. Android应用进入爆发期 手机游戏仍是市场重心
  9. Ajax在IE浏览器会出现中文乱码解决办法
  10. python 键盘输入_跟我一起学python | 探究07
  11. 【解决方案】IP代理池设计与解决方案
  12. selenium:解决页面元素display:none的方法
  13. 人脸对齐(二十)--PRN
  14. android浏览系统分区,Android系统分区
  15. 蓝桥杯2016年第七届C/C++省赛B组第五题-抽签
  16. linux librtmp 编译,在linux系统下安装python librtmp包的实现方法
  17. ActiveMQ 下载与安装
  18. Java、JSP公文流转系统
  19. Mysql安装步骤:
  20. 两个for循环写出大小写字母表

热门文章

  1. 面试题:String StringBufere StringBuilder 不用看
  2. Pycharm选择pyenv安装的Python版本
  3. 远端仓库初始化成裸仓库 git init --bare
  4. JNCIS翻译文档之------接口3
  5. RedHat 9 Linux SendMail 的配置
  6. java 静态缓存_JAVA缓存的实现
  7. mysql 随机槽_mysql怎样高效率随机获取n条数据
  8. Linux编译代码卡死,Linux下970Pro编译卡死的问题
  9. Spring-Logback-动态修改日志级别
  10. 网关为0.0.0.0_距离ETH 2.0仅7天,目标价为?美元