前端基础知识整理二

1、js事件循环:宏任务和微任务

  • 宏任务:I/O(比如文件读写等)、setTimeout、setInterval、包括整体js代码(script标签下的同步任务代码
  • 微任务:Promise.then/catch/finally、generator、async/await等
    二者执行顺序:有微任务则先执行微任务,没有微任务才执行宏任务
    那么我们来做一个练习
setTimeout(() => {
  console.log(1)
}, 0)
new Promise((resolve, reject) => {
  console.log(2)
  for (var i = 0; i < 1000; i++) {
    i === 999 && resolve()
  }
  console.log(3)
}).then(() => {
  console.log(4)
})
console.log(5)

2、es5数组5种迭代方法
every、some、forEach、filter、map、reduce
3、js遍历数组方法总结,forEach、for of和for in

  • forEach不可以遍历对象,这也是它和for in的一个区别

优点:遍历的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少了出错的效率

缺点:跳出循环无法像其他的遍历方式那样通过break,return跳出循环,通常使用抛出异常的方式结束循环

  • for循环:
    优点:程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出
    缺点:结构比while循环复杂,容易出编码错误,不可以遍历对象
    条件i

  • for in:大部分用于遍历对象,for in循环里面的index是string类型的,代码每执行一次,就会对数组的元素或者对象的属性进行一次操作

优点:可以遍历数组的键名,遍历对象简洁方便
缺点:某些情况下,会出现随机顺序的遍历,因为里面的值是string类型,所以增加了转换过程,因此开销较大

  • for 0f: 可遍历map,object,array,set string等

优点:避免了for in的所有缺点,可以使用break,continue和return,不仅支持数组的遍历,还可以遍历类似数组的对象,支持字符串的遍历最简洁,最直接的遍历数组的语法 支持map和Set对象遍历
缺点:不适用于处理原有的原生对象(原生对象是一个子集,包含一些在运动过程中动态创建的对象)

你可能感兴趣的:(前端基础知识整理二)