Skip to content
On this page

Q&A

js 代码压缩 minify 的原理是什么

  1. 去除多余空格、换行符、注释
  2. 压缩长变量名、函数名
  3. 解析程序逻辑:合并声明、布尔值简化
    js
     // 压缩前
     const a = 3;
     const b = 4;
    
     // 压缩后
     const a = 3, b = 4;
    
    js
     // 压缩前
     !b && !c && !d && !e
    
     // 压缩后
     !(b||c||d||e)
    
  4. 编译预计算
    js
     // 压缩前
     const ONE_YEAR = 365 * 24 * 60 * 60
    
     // 压缩后
     const ONE_YEAR = 31536000
    
    js
     // 压缩前
     function hello () {
         console.log('hello, world')
     }
     hello()
    
     // 压缩后
     console.log('hello, world') 
    

Map 与 WeakMap 区别

  • WeakMap: key 为弱引用,不影响垃圾回收的工作。只要 value 在其他地方没有引用了,垃圾回收便会将其回收,WeakMap 中对应的 key 也会消失,节省了内存占用。没有遍历方法。(即没有 keys()values()entries() 方法,也没有 size 属性)
  • Map: key 为强引用,会影响垃圾回收工作,key 对应的 value 永远都会被引用,不会被垃圾回收。有遍历方法。