Source Code - JavaScript - 学习优雅的编码

宁静致远。javascript


说明

  • 知识在不断迭代,除了学习资料,那就是学习他人,来丰富本身。
  • 如下全是别人的源码,会标明出处,很是感谢原做者,很是感谢开源。

优雅

mitt

// source code
  all = all || Object.create(null);
  • 短路运算符:详情MDN
  • Object.create(null):生成的对象是一个原型为空的对象。节约内存且避免冲突,由于没有原型,且普通对象原型上的属性和方法也相应没有了。
// source code
  (all[type] || (all[type] = [])).push(handler);
// my code - bad
  if (all[type]) {
    all[type].push(handler)
  } else {
    all[type] = [handler]
  }
  • 简洁的队列赋值:短路逻辑判断 + 初始化 + 更新数组,简直不要太优雅。
// source code
  all[type].splice(all[type].indexOf(handler) >>> 0, 1);
  • 按位操做符:1 >>> 0 = 1, -1 >>> 0 = 4294967295, 详情MDN
  • 补充:按位操做符'~',能够结合.indexOf()使用,由于对任一数值 x 进行按位非操做的结果为 -(x + 1),即:~-1 = 0
// source code
  (all[type] || []).slice().map((handler) => { handler(evt); });
  (all['*'] || []).slice().map((handler) => { handler(type, evt); });
  • Array.slice():slice不传参数的时候,至关于浅复制一个数组,详情MDN

axios

// source code
  别着急

零散

// source code
  !!(0)             // false
  !!(null)          // false
  !!('')            // false
  !!(undefined)     // false
  !!(NaN)           // false
  
  !!(2)             // true
  • !!: 强制转换成 boolean 类型,至关于 !(!val)。若是 val = 0/null/""/undefined/NaN 时,!!(val) = false,若是 val 是其余值,!!(val) = true
  • !: 取反运算,返回的也是一个 boolean 类型。若是 val = 0/null/""/undefined/NaN 时,!(val) = false,若是 val 是其余值,!(val) = true
// source code
  +'123456'        // 123456, Number
  +new Date()      // 1527684413484, 至关于 new Date().getTime()
  • +: +val 将字符串数字转为数字。若是 val 是非字符串数字,则 +val = NaN

好记性不如烂笔头。java

相关文章
相关标签/搜索