js

4/28/2024 js

# ES6 的新特性有哪些?

  1. 声明块级作用域的变量。let 和 const 声明变量的方式,取代了 var 关键字。
  2. 箭头函数(Arrow Function),简化了函数的书写方式,this指向定义时包含它的最近一层非箭头函数上下文的this值。。
  3. 模板字符串(Template String),允许在字符串中使用变量和表达式,而不需要使用字符串连接符号 `${}`
  4. 解构赋值(Destructuring Assignment),允许从数组和对象中提取值并赋值给变量。const {x, y, z} = obj;
  5. 默认参数(Default Parameter),在定义函数时可以给参数设置默认值。function func1(a = 1)
  6. 扩展操作符(Spread Operator),可以在函数调用时展开数组或对象。func1(...obj)
  7. 类(Class),引入了面向对象编程中类的概念。
  8. 模块化(Module),提供了一种组织代码的方式,可以将代码分割成独立的模块,方便重用和维护
  9. Promise,用于处理异步操作,避免回调地狱的问题。
  10. for…of 循环,用于遍历可迭代对象(如数组、Map 和 Set)中的元素。for (element of iterable),对于Map元素是for (let [key, value] of map)
  11. Symbol,引入了一种新的数据类型,用于创建唯一的属性键。
  12. Map 和 Set,引入了两种新的数据结构,分别用于存储键值对和唯一值。
  13. Proxy,允许在对象和函数调用等操作前后添加自定义的行为。
  14. Reflect,提供了一组可以操作对象的内置方法,可以替代一些对象方法(如 Object.defineProperty)的实现。
  15. Promise.allSettled,用于处理多个 Promise 的状态并返回一个包含每个 Promise 状态的数组。

# 说一些你经常用到的数组的方法

  • splice(index, deleteCount, ...newAddEl) 在指定索引处删除若干个元素然后加入一些元素
  • join(separator?: string) 以指定连接符连接数组的元素
  • filter((current, index)=>{}) 筛选符合条件的元素
  • find 找到第一个符合条件的元素
  • findIndex 找到第一个符合条件的元素的索引
  • concat 连接多个数组
  • map,forEach,reduce 遍历数组
  • push,pop 在末尾插入删除
  • shift,unshift 在开头删除插入
  • some 是否有部分符合条件
  • sort 排序,reverse 反转

# 前端优化

  1. 避免过多的回流和重绘