前端易混淆知识点记录(持续更新)

248 阅读1分钟

for-in和for-of的区别

for-in是es5的标准,遍历的是key,可遍历(数组,对象,字符串);

for-in更适合遍历对象,因为for-in遍历数组时,遍历顺序可能不是按照实际数组的顺序而来,for-in会遍历数组中所以可以枚举的属性;

for-of是es6的标准,遍历的是value,可遍历(数组,对象,字符串,Map,Set);

需要注意的是:forEach遍历数组,是无法使用breack中断循环的

Set,Map,WeakSet,WeatMap的区别

  • Set:
    • 成员唯一,无序不重复
    • 可以遍历,方法:add,delete,has,clear 属性:size
  • WeatSet
    • 成员都是对象(弱引用,可以被回收),不能存放值
    • weakSet对象中有多少个成员取决于垃圾回收机制有没有运行,可以用来保存DOM节点,不容易内存泄漏
    • 不能遍历,方法:add,delete,has
  • Map
    • 本质上是键值对的集合,类似集合
    • 可以遍历,方法:set,get,has,delete,clear
    • 任何具有Iterator接口且成员是双元素数组的数据结构都可以传给Map
const m=new Map([["a",1],["b",2]])
  • WeatMap
    • 只接受对象作为键名(null除外)
    • 键名是弱引用,键值任意
    • 不能遍历,方法get,set,has,delete

数组sort方法的使用

  • 数组在原数组上进行排序,不生成副本

  • 没有传参数,将按照字符编码的顺序进行排序

  • 传入比较函数(a,b)=>val; a-b升序,b-a降序