造轮子
不依赖任何框架、库,无需编译,用最原生的 JavaScript 造轮子。
树形结构是一种层次嵌套的结构。它提供了一种有序的组织方式,能够方便地表示层次关系和结构化数据,在文件系统、数据库索引、DOM 等场景中被广泛应用。树形结构的遍历、搜索和操作等算法也是计算机中常见的问题。
1 | const tree = [ |
Base64 是一种用 64 个可打印字符来表示任意二进制数据的二进制编码方法。可以用来处理和传输任意二进制数据。
Base64 最初是用在电子邮件中,为了满足电子邮件中不能直接使用非 ASCII 码字符的规定,用来传输二进制文件的。除此之外,它还可将任意不可打印的二进制数据,转化为可打印的文本编码,使用文本软件进行编辑(二进制流中有很多都是无法显示和打印的,比如 ASCII 中的控制字符,二进制文件 jpg、pad、exe 等,如果用记事本打开这些文件,会看到一堆乱码)。
科里化的关键是返回函数实现连式调用、参数收集、以及判断收集结束做最终调用。判断收集结束有很多办法:对比实参和形参的长度;判断实参的个数是否为 0(不传)。
1 | function currying(fn) { |
大型的 CSS 项目中,往往会遇到 CSS 结构混乱、多人协作命名冲突、没有组件化无法复用…等等问题。为了解决这些问题于是引入 CSS 设计模式,用 BEM 来解决命名空间的问题,用 SMACSS 来解决代码分层问题,用 OOCSS 来解决解构复用问题。
外循环控制几轮冒泡,内循环进行冒泡(比较大小交换位置,就像气泡一样从数组底部”冒泡”到数组的顶部)。
1 | function bubbleSort(arr) { |
类型动静态强调的是静态类型检测,类型强弱强调的是隐式类型转换,JavaScript 是一门动态类型(dynamically typed)且弱类型(weakly typed)语言,既不对类型进行静态检测,又允许隐式类型转换。
1 | let foo = 42; // foo 是 number |
1 | 10 + ''; // number 转成了 string |