宁静致远。


说明

  • 知识在不断迭代,除了学习资料,那就是学习他人,来丰富自己。
  • 以下全是别人的源码,会标明出处,非常感谢原作者,非常感谢开源。

优雅

  • mitt:源码,微型库解读之200byte的EventEmitter - Mitt
  • axios: 源码
  • 零散:12 useful hacks

mitt

  // source codeall = all || Object.create(null);
  • 短路运算符:详情MDN
  • Object.create(null):生成的对象是一个原型为空的对象。节约内存且避免冲突,因为没有原型,且普通对象原型上的属性和方法也相应没有了。
  // source code(all[type] || (all[type] = [])).push(handler);
  // my code - badif (all[type]) {all[type].push(handler)} else {all[type] = [handler]}
  • 简洁的队列赋值:短路逻辑判断 + 初始化 + 更新数组,简直不要太优雅。
  // source codeall[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

好记性不如烂笔头。

Source Code - JavaScript - 学习优雅的编码相关推荐

  1. UI5 Source code map机制的细节介绍

    在我的博客A debugging issue caused by source code mapping里我介绍了在我做SAP C4C开发时遇到的一个曾经困扰我很久的问题,最后结论是这个问题由于Jav ...

  2. JavaScript学习笔记(一)-Learning Advanced JavaScript

    JavaScript学习笔记 (一)- Learning Advanced JavaScript Learning Advanced JavaScript #2: Goal: To be able t ...

  3. 原来Github上也有这么多的JavaScript学习资源!

    程序员书库(ID:OpenSourceTop) 编译 书单来自:https://risingstars.js.org/2019/en/ 最近,bestofjs发布了2019年度JavaScript年度 ...

  4. 【论文笔记】 Reinforcement-Learning-Guided Source Code Summarization using Hierarchical Attention

    1 INTRODUCTION 软件维护blablabla--代码注释blablabla-- 好的代码注释应具有以下特征:(1) 正确性,正确地阐明代码的意图:(2) 流利,使维护者易于阅读和理解:(3 ...

  5. javascript学习_真正学习javascript

    javascript学习 So, you think you know JavaScript. You can write conditional statements galore, have ma ...

  6. A Transformer-based Approach for Source code Summarization 翻译

    A Transformer-based Approach for Source Code Summarization 全文翻译 本文最佳阅读方式:读完一段中文内容快速阅读对应的英文部分 欢迎关注我的公 ...

  7. JavaScript 学习手册二

    JavaScript 学习手册二:JS 数据类型 第1关:JavaScript 数据类型介绍 任务描述 本关任务:在函数 objectTest() 内部定义了六个变量 a.b.c.d.e.f,并已经赋 ...

  8. A Novel Neural Source Code Representation based on Abstract Syntax Tree--ICSE2019

    一种新型的基于源代码表示的一种方法 最新的研究表明,基于AST的神经模型可以更好地表示源代码.然而AST的规模通常较大,现有的模型容易出现长期依赖的问题. 本文提出了ASTNN,一种新的基于AST的源 ...

  9. 【综述笔记】 A survey of automatic generation of source code comments Algorithms and techniques

    A survey of automatic generation of source code comments Algorithms and techniques ABSTRACT 代码注释存在问题 ...

最新文章

  1. Python Beautiful Soup类的基本元素
  2. VirtualBox Ubuntu虚拟机串口编程
  3. Python编程的若干个经典小技巧
  4. 中国桑叶市发展态势分析与前景动态预测报告场2022-2028年版
  5. Serializable接口中serialVersionUID字段的作用
  6. 野生前端的数据结构练习(1)——栈
  7. Fluent Web API集成测试
  8. opc怎么在计算机上测试,OPC测试
  9. 一个数字几个字节_技术工坊40期-DAG技术特性以及在字节雪球Obyte项目的使用实践...
  10. 怒:排序这样的最基本功能都错了,你们竟然不感到羞耻?不反思工作?
  11. 48小时备考TOGAF经验分享
  12. mx350显卡天梯图_2020年显卡天梯图(2020.04月更新)
  13. 双向电平转换芯片TXB0304应用笔记
  14. js-js数据结构和算法-递归思想-斐波那契数-动态规划-贪心
  15. 以太网卡支持的工作模式
  16. 华为Android10怎样root,华为M2平板10.0怎么ROOT 华为M2超级权限图文教程
  17. fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换
  18. [人工智能-深度学习-59]:生成对抗网络GAN - 基本原理(图解、详解、通俗易懂)
  19. idea 的 maven 项目报错:The program‘s entry point class ‘xxx‘ was not found in the jar file.
  20. configSections(配置文件)

热门文章

  1. MapInfo SQL查询
  2. 在64位ubuntu11.10中用锐捷上网
  3. 如何使微信小程序盒子内容居中显示
  4. 毕设 房地产客服管理系统论文
  5. MGRE、Tunnel、RIP、PPP综合实验
  6. 国内无线通信模组企业(TOP 80)
  7. 车道保持系统(LKAS) 介绍与验证方法
  8. vue SSR 部署详解
  9. 激活 ActiveX 控件
  10. 艾司博讯:拼多多冲销量的方法有哪些?