

注意:本文中的示例是专门为使用Javascript编写的软件工程师量身定制的,但是这些课程可以在任何领域中使用。
在学习过程中的某个时候,您会听到有人提到您不理解的概念。
在这种情况下, 写下该概念并留出时间进行研究 至关重要 。
这些只是今天文章的前提。 我们今天要回答的问题是, 理解一个困难的概念应该遵循什么过程?
让我们使用一个特定的Javascript示例。
吊装
这是一个棘手的Javascript概念,具有许多令人惊讶的后果。
怎么去研究这个? 以下是一些可能采用的策略。
1:观看有关吊装的视频。
2:阅读有关吊装的文章
3:阅读有关吊装的堆栈溢出信息
看起来像一个体面的策略吧?
错误。
所有这些活动有一个共同点。
他们都是被动的!
记住一个概念的定义和理解一个概念之间有一个关键的区别 。
让我们从Scotch.io中使用以下提升定义:
提升是一种JavaScript机制,在执行代码之前,变量和函数声明会移至其作用域的顶部。
如果您要记住这个定义,那么您将仅能理解吊装方式的20% 。
我很自信,如果我让一群从未听说过吊装的Javascript学生,给他们这个定义,然后给他们10个吊装问题, 他们会误会大多数。
原因如下:
要真正理解一个概念,您需要在实践中拥有一系列的第一手经验。
通过将每个体验映射到一个单词或短语, 定义只会在事实发生之后有所帮助,以便可以轻松地调用每个体验记忆。
让我们以该定义为例。 这是原始的
“提升是一种JavaScript机制,在执行代码之前,变量和函数声明会移至其作用域的顶部。”
作为一个不懂吊装的人,当我第一次阅读该定义时,我可能会理解是在说–
提升是Javascript将内容移到顶部的地方。
我拿出一大堆的话! 为什么? 因为我没有榜样或经验来锚定他们!
理想情况下,当某人阅读原始定义时,每个单词和短语都应该使他们想起他们已经知道的东西。
让我们看看有经验的Javascripter在阅读相同定义时会理解什么。
“吊装是一种JavaScript机制……”
哦,是的,我记得并不是所有的编程语言都使用提升。 我还记得,公司经常询问吊装,以了解您对Java的理解程度。
“变量和函数声明在哪里……”
该行没有提及const或let, 因为未提升let和const。 我记得学习这本书是因为我试图为自己编写一个提升示例,并且我使用了const并十分困惑,直到我用Google搜索它为止。
该行在仅提及函数声明时也非常具体,因为未提升函数表达式。 我解决了一个使用函数声明的提升示例问题,并且我记得在提升该声明时感到非常困惑。
“在执行代码之前已移至其作用域的顶部。”
这就是“作用域的顶部”,因为如果在函数中声明变量, 它们将被提升到作用域的顶部。 我记得我对起重问题感到困惑,而这最终就是原因。
注意,当有经验的Javascripter阅读定义时,每个短语都会提醒他们学习吊装时的突破。
这样,可以将定义视为您的经验的MAP 。
理想情况下,选择单词的方式应使您联想起学习主题时遇到的每一个重要突破。
但是在拥有地图之前,您需要地形。
您需要经验。
要真正学习一个概念,您需要亲身体验该概念,然后才能充分利用定义的价值。
如何获得这种经验?
为自己创建演练和活动,迫使您使用每一项知识。
这是软件工程师的选项列表:
1:建立练习仓库
写一个仓库,讨论该主题上的一系列棘手问题,将其上传到Github,并公开给下一个学习者!
2:从头开始重建功能
通常,Javascript功能很小,以至于人们可以在一个下午从头开始重写整个功能。 (承诺就是一个很好的例子)
3:创建一个教程
写一篇中篇文章,或创建有关此概念如何工作的Youtube视频。 在教学中,您将面临解释每个棘手的案例的挑战。
我希望本文能激发您下次遇到困难概念时进行一些积极的学习 。
作为奖励:我以今天的示例(吊装)为例,进行了回购,针对每个吊装边缘案例遇到了11个问题。
如果您正在学习吊装,我保证这是一种宝贵的资源。
如果这对您有帮助, 我将非常感谢该仓库中的一颗星星。 它可以帮助其他学习者更轻松地找到它! 动手进行吊装回购
谢谢!