debounce 的简单实现

为什么要讲这个话题呢?主要是因为最近很多问题都由这个特性帮我解决了,让我感叹这非常有用。

学习英语是理解编程的第一步。de- 在英语里表示 xx 的反义,比如 defrost(除霜),deactivate(使失活),decentralization(权力分散),那么 debounce 的意思就是防抖/防止弹跳。我们结合实际的例子感性的认识一下。

继续阅读“debounce 的简单实现”

如何编写一个 webpack plugin

本篇文章源自我自己的一个需求:我想看看 webpack 是如何组织 js 代码模块化的。打开编译后的文件有很多注释,不方便查看,我想去掉这些这些注释,那应该怎么做呢?学习写个插件用正则替换这些注释代码。

插件的设计机制一般都是在程序运行的各个阶段提供不同的 hook,传入数据、修改数据,以期得到一个满意的结果,webpack 也不例外。那针对这种场景,应该使用说明钩子函数呢?

继续阅读“如何编写一个 webpack plugin”

动态规划(Dynamic programming)— JavaScript 描述

《数据结构与算法 JavaScript 描述》这本书错误好多,为什么译者不把这些错误纠正呢?

在工作中,我们都用过递归,用俗话说就是函数自己调用自己;而动态规划一般被认为是和递归相反的一种解决问题的思路:递归是从解决一个大问题开始,通过逐步解决一些小问题,来使最终的问题得到解决;动态规划的思路则恰恰相反。

继续阅读“动态规划(Dynamic programming)— JavaScript 描述”

工作和生活的情绪应该分开

2020-04-30

2020-04-29

2020-04-28

有一个二维数组如下: let arr = [[“a0”, “a1”], [“a1”, “a2”], [“a3”]]; 我们看到 a1 这个元素在数组的第 0 项和第 1 项都存在了,我们需要将其合并成一项:

// 需要转化成 [[“a0”, “a1”, “a2”], [“a3”]]

同理,针对一个任意项的二维数组,只要其中某单个元素重复了,就应该合并进同一个数组里,减少这个二维数组的个数。那么怎么实现这个呢?

标题:工作中的一个问题之二

内容来自曾小乱的blog:https://zengxiaoluan.com/question-in-working/

继续阅读“工作和生活的情绪应该分开”

工作中的一个问题之二

有一个二维数组如下:

let arr = [["a0", "a1"], ["a1", "a2"], ["a3"]];

我们看到 a1 这个元素在数组的第 0 项和第 1 项都存在了,我们需要将其合并成一项:

// 需要转化成 [["a0", "a1", "a2"], ["a3"]]

同理,针对一个任意项的二维数组,只要其中某单个元素重复了,就应该合并进同一个数组里,减少这个二维数组的个数。那么怎么实现这个呢?

继续阅读“工作中的一个问题之二”

工作中的一个小问题

有一个字符串: a[0:3]bb[-1:9]c[-1:-9]d ,0 对应 a0bb-1c-1d,1 对应 a0bb-1c-2d,2 对应 a0bb-1c-3d,以此类推,那么当 100 应该对应哪个字符串?怎么实现这个转化?

需要注意 2 个地方,一个是 [-10:3] 可以递增,也可以是递减 [3:-10];另一个是这种模式可以无限叠加。

继续阅读“工作中的一个小问题”

三月份的工作紧张

2020-03-31

应该正确使用 label 标签了,虽然我以前用了很长时间理解它。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label

2020-03-30

学习英语是理解编程的第一步,generator 有发电机的意思,而 yield 有产生的意思,两者结合可以源源不断产生电源,很符合生成器函数的特性。 而利用 generator 处理异步也可以这样写:

标题:generator 和异步回调

内容来自曾小乱的blog:https://zengxiaoluan.com/generator-and-asynchronous-callbacks/#2020-03-30%E6%9B%B4%E6%96%B0

继续阅读“三月份的工作紧张”

partial application

这个概念好像不太好翻译,有人直译为偏应用,对不懂这个概念的人有点一头雾水,不知所云,我来简单理解一下。另外已经有工程师把这个特性提交到了 tc39,说不定不久我们就能在新版谷歌浏览器使用了。

我们有一个求和函数如下:

function foo(a, b, c) { return a + b + c }

当我调用的时候,有个参数我突然不知道传什么,暂时想不传,并用 undefined 来替代。我们当然不能这么写:

foo(undefined,1,2)
继续阅读“partial application”