promise相关

  • promise应有:需要处理异步任务的地方
  • 执行流程(宏任务/微任务)— 宏任务:需要先进队列,微任务:本轮任务的末尾(浏览器渲染前)
    • 每一个任务(函数)的执行过程都有可能产生宏任务和微任务
    • 每个任务执行的最后,需要先执行完所有的微任务,在开始执行宏任务

      关于this

      this 指向取决于调用,而不是定义 ```javascript function foo() { console.log(this) } // 1.普通调用:指向全局,严格模式下指向undefined foo() // 2.new 调用:指向空对象,空对象有个名字就是函数本身的名字 this=>foo{} new foo() // 3.call/apply/bind: 自己指定,当前是123 foo.call(‘123’)

// 严格模式:沿着作用域找到最近一个function,看这个function最终是怎样执行的

  1. <a name="3XLll"></a>
  2. ### ES2018+
  3. <a name="gQUfL"></a>
  4. #### 正则表达式的增强
  5. ```javascript
  6. // 正则
  7. const msg = '张三是张三,张三丰是张三丰,张三不是张三丰,张三丰也不是张三'
  8. // 向后否定
  9. const n1 = msg.replace(/张三(?!丰)/g, '李四')
  10. console.log(n1)
  11. // 李四是李四,张三丰是张三丰,李四不是张三丰,张三丰也不是李四
  12. // 向后肯定
  13. const n2 = msg.replace(/张三(?=丰)/g, '李四')
  14. console.log(n2)
  15. // 张三是张三,李四丰是李四丰,张三不是李四丰,李四丰也不是张三
  16. // 向前否定
  17. const n3 = msg.replace(/(?<=,)张三/g, '李四')
  18. console.log(n3)
  19. // 张三是张三,李四丰是张三丰,李四不是张三丰,李四丰也不是张三
  20. // 向前肯定
  21. const n4 = msg.replace(/(?<!,)张三/g, '李四')
  22. console.log(n4)
  23. // 李四是李四,张三丰是李四丰,张三不是李四丰,张三丰也不是李四