JavaScript高质量代码之路| 青训营笔记

79 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

第二天学习了JavaScript高质量代码课程内容,我把我喜欢的内容做了一些笔记😁。


JavaScript这次内容还挺多的,我主要写了几个demo代码:

  • Toggle例子用法;
  • consumer例子用法;
  • 交通灯过程抽象 | 例子用法
  • 洗牌 发牌 生成器 | 例子用法

先看看我的demo代码笔记: 相信大家都能看懂toggle的写法!

这个consumer其实就是用tasks队列存储了所有未来要执行的任务,并通过setInterval不断执行完才停止。

交通信号灯有两个抽象:数据抽象和过程抽象,这里是过程抽象。要去理解把行为逐个拆分并抽象的过程。

洗牌和发牌,我写的代码还有个疑问:报错怎么解决?

Uncaught ReferenceError: Cannot access 'pIdx' before initialization/preview?projectId=7189171737454936079:11:8 ReferenceError: Cannot access 'pIdx' before initialization
[c[pIdx], c[i - 1]] = [c[i - 1], c[pIdx]];//交换

接下来看看我的笔记:

组件的封装,总结基本方法:

  • 结构设计

  • 展现效果

  • 行为设计

    • API(功能
    • Event(控制流

重构:

  • 插件化,解耦

    • 将控制元素抽取成插件
    • 插件与组件之间通过依赖注入方式建立联系
  • 模板化 html css
  • 抽象化

    • 数据抽象
    • 过程抽象

高阶函数:

以函数为参数,以函数为返回值,常用于函数装饰器

减少非纯函数,增加可维护性

快速幂的时间复杂度 O(logn)->想再优化,就是先算出循环次数,再直接循环

交通灯案例,数据抽象,过程抽象

求2的幂:

  • num>0 && (num&num-1)===0

求4的幂(2的基础上)一个1 偶数位不能是1

num & 01010101...10 ===0

即num & 0xAAAAAAAAAAAAA===0

js 精度53位:0xAAAAAAAAAAAAA

还能用正则来做。


摸了一天了~🤔

这里是[可嘉的掘金博客](https://juejin.cn/user/378680749333096),下次见!