互联网时代,稀缺的不是知识,而是整合知识的方式

世界上没有那么多天才,成功的背后,都是正确的学习方法和不懈的努力。

互联网时代,稀缺的不是知识,而是整合知识的方式。

我认识很多专业的前端小伙伴,我知道大家都能够在信息爆炸的碎片化时代,找到海量的 JavaScript 知识,可是找到它们,并不等于学会它们。对于很多人来说,如何掌握好 JavaScript 始终是一个困扰。即使看了多本名书,具备多年工作经验,可依然学不好它,甚至在学习了多年之后,对于基础知识存在许多盲区。

例如:

许多人无法准确理解引用数据类型,无法感知到它在内存中的区别会给我们的工作带来哪些困扰。

许多人无法理解闭包,他们能够大概表达出来闭包的定义,却不知道闭包在项目中是如何帮助我们完成大量的工作。甚至有少量的人还觉得闭包有害,认为闭包是 JavaScript 的设计缺陷。

许多人无法理解事件循环,没有认知到事件循环的重要意义,无法将事件循环与线程结合起来理解,不知道如何借助事件循环的机制达到性能优化的目的。

甚至很多人不理解函数,无法区分函数声明与函数执行的区别,没有想过函数声明与函数执行在内存中的不同表现,无法很好的利用函数达到一些难度看上去偏高的目标。

等等。

这些知识的相关文章,在网上并不难获取。只要学习过前端一段时间,大家多多少少都对它们有一定的理解,然而,也正是这些知识,阻碍了你更进一步。许多人在前端道路上的瓶颈,几乎都是由于缺乏知识整合的方式带来的。

如果有这么一本书,他介绍的所有内容,都依托于一种行之有效的知识整合方式,那么这本书,在当今时代,一定是一本非常稀缺的好书。

这就是《JavaScript 核心进阶》的核心进阶思路。

换一种说法,这种整合知识的方式,通常也被称之为知识体系。

1

什么是知识体系

知识体系,就是把分散且看上去独立的概念或者观点,加以整合,形成具有一定关联性的知识系统。

互联网时代,是一个信息爆炸的碎片化时代。我们每一个人,每一天都能够接触到非常多的知识。如果你打算自学前端,也能从网上找到海量的前端知识。

可你收集到的知识,不是以一个树状结构呈现给你,而是凌乱而分散的摆在你的面前。将这些知识,通过自己的理解,整合成为属于自己的知识体系,就变得非常困难。

这非常考验一个人的个人学习能力,而大多数人,不具备这样的能力。

于是,许多人自学前端,常常对掌握到的知识似懂非懂。你会有一种不知道这些知识学过来有什么用的困惑。这样的困惑,会让你怀疑自己是否真的掌握了这个知识。时间一久,你甚至会完全忘记它。你无法感知到自己的进步。

这正是因为,大家没有或者不知道如何去建立属于自己的知识体系,你没办法找到基础知识和实践之间的关联性。所以你感知不到这些知识存在的价值。

2

知识体系为什么很重要

我在很早之前,遇到了一个性能上的难题:仓库里有大量的商品,上亿件。需求是要计算出来所有商品的成本总价。实现这个功能非常简单,每次计算时,只需要把所有商品的成本单价加起来,就是成本总价了。假设我们实现了一个 api,名为 getTotalPrice ,那么有如下伪代码

// 注意,这只是伪代码
function getTotalPrice() {
    // 1. 遍历数据库,查出所有的商品项及其单价
  const products = db.merchandise.get();
  
  // 然后,遍历products「上亿项数据」,将单价 price 相加,得出结果
  let total = 0
  
  // 循环,上亿项单价相加
  products.forEach(mer => {
    total += mer.price;
  })
  
  return total
}

问题就在于,仓库中的商品数量是随时变化的,每天都有大量的商品入库出库,也就意味着,商品的成本总价在不停的变化之中,与此同时,每天会有许多的用户会有查看商品成本总价的需求,如果这样的用户特别多的话,我们刚才定义的 getTotalPrice 方法就可能同时需要执行很多次。不停的重复计算在性能上的影响非常大,于是这种方案就变得不可取,那应该怎么办?

后来,我从 JavaScript 数组的 length 字段中找到了灵感。

我们先来了解一下关于 length 字段的基础知识。

数组提供了一个字段,length,用以访问数组的长度。这里我们要思考一个问题,首先,数组肯定是可以被改变的,我们可以调用 push 或者 pop 等方法来改变数组项的个数。可是为什么数组没有像我们刚才那样,提供一个 length() 方法去计算数组的长度,而是直接只提供了一个可以直接访问的 length 属性,而且这个 length 属性居然还能随时反应出正确的数组长度?

很显然,一定是做了额外的处理。

这个额外处理其实很简单,我们只需要在数组初始化时,使用 length 字段记录一次数组的长度。当数组改变「删除/新增」时,对应的去修改 length 的值就可以了。这样我们就能够随时访问到数组正确的 length,而不需要每次访问时,还要去调用一个函数计算一次。

同样的道理,对于仓库里商品的成本总价的管理,我们在仓库管理初始时,记录一次成本总价,以后每次入库,就在之前总价的基础上,加上本次入库的成本,每次出库,在之前的总价基础上,减去出库商品的成本,这样,我们就可以不用任何计算,直接得到仓库的成本总价。完美的解决了大量计算的性能问题。

一个看上去非常复杂的应用性能问题,而且还是后端数据库的解决方案,居然从最基础 JavaScript 数组的 length 属性上找到了灵感。

简直不可思议。

这就是知识体系的威力。他能够让我们拥有更强的问题解决能力。没有完善的知识体系,我想破脑袋,也不可能从最基础的 length 字段中找到解决方案。

除此之外,知识体系能够让你的学习能力得到巨大的提升。

至于为什么,这里把悬念留在后续的章节中,大家自行感受。

知识体系,能够帮助你不断佐证你所学的知识是否正确。我们在网上学到的许多知识,没有经历过权威认证,也许只是某个博主的个人所见,因此常常我们吸收到的知识会有所偏差。

例如一个重要的知识点,闭包。

许多人在这个点上出现严重的认知偏差。他们认为,闭包会造成内存泄漏,于是我们应该在实践中避免使用它,他们认为闭包是有害的。

而实际情况却是,我们很多实践场景,都在利用闭包达到我们想要的目的。闭包可以说是无处不在。

因为缺乏建立知识体系的思考过程,我们没有把闭包的基础理论,与实践结合起来理解,于是这个错误的认知,可能会伴随我们非常久的一段时间。而知识体系的完善,会帮助我们快速纠正我们的错误。

3

如何建立知识体系

知识体系的建立过程,是对知识融汇贯通的过程。也是不断审视自己的认知是否正确的过程。我们要在知识与知识之间,理论与理论之间,理论与实践之间,建立可靠的联系。

而在 JavaScript 这一个细分方向,如何建立知识体系,《JavaScript 核心进阶》用一整本书共72篇文章告诉我们答案。你值得一试!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容