JS面试题,一问一答!9.20

目录

1、call apply bind 的作用与区别?

2、什么是同步任务,什么是异步任务?

3、说说什么是事件代理(事件委托)?

4、es6的新增特性有什么?

5、Promise是什么?

6、什么是 DOM 和 BOM?


1、call apply bind 的作用与区别?

作用:改变函数内部 this 的指向

区别

  1. call 和 apply 会调用函数,而 bind 不会调用

  2. call 和 bind 的参数是 参数列表逐个传入,而 apply 的参数必须为数组形式

call apply bind 详细理解

2、什么是同步任务,什么是异步任务?

  • 同步任务是指在主线程上排队执行的任务,
    只有前一个任务执行完毕,才能继续执行下一个任务。

  • 异步任务指的是,不进入主线程、而进入"任务队列"的任务,只有等主线程任务执行完毕,"任务队列"的任务才会进入主线程执行。

3、说说什么是事件代理(事件委托)?

  • 是 js 中常用绑定事件的常技巧。“事件代理”是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是 DOM 元素的事件冒泡。使用事件委托的好处是可以提高性能。
  • 可以大量节省内存占用,减少事件注册,当新增子对象时无需再次对其绑定。

4、es6的新增特性有什么?

  1. let、const: 声明变量和常量
  2. 模板字符串:增强版的字符串,用反引号标识,嵌入变量只需要放在${}中
  3. 箭头函数:ES6中函数定义不再使用关键字function(),而是利用了()=>来进行定义
  4. 解构赋值:按照类型的不同有不同的方式提取值,赋值
  5. Symbol:新增的基本数据类型,特点就是里面的值唯一
  6. Set 和 Map 数据结构
  7. 展开运算符(…): 可以将数组或对象里面的值展开, 还可以将 Set 数据结构转换为数组
  8. for...of 循环: 可以遍历数组对象以及 Set 和 Map 数据结构
  9. class 类:通过 extends 实现继承
  10. promise、(async/await): 都是用来解决异步编程的方案
  11. proxy:代理对象,直接监听对象的变化,然后触发相应的逻辑

5、Promise是什么?

  • Promise 是 es6 引入解决异步编程问题的解决方案
  • Promise 有三种状态:pending(进行中)、resolve(已完成)、reject(已失败)
  • 当 Promise 的状态由 pending 转变为 resolved 或 reject 时,会执行相应的回调, 一旦从 pending 状态变成为其他状态就不能再更改状态了
  • 可以链式调用,解决回调地狱的问题

6、什么是 DOM 和 BOM?

  • DOM:文档对象模型,就是把 文档 当做一个对象,顶级对象是document, dom主要是操作页面元素。
  • BOM: 浏览器对象模型,把 浏览器 当做一个对象,顶级对象是window, bom主要是控制浏览器窗口交互的一些对象,除了window还有history,navigator,location

你可能感兴趣的:(javascript,开发语言,ecmascript)