当人们尝试学习 JavaScript , 或者其他编程技术的时候,常常会遇到同样的挑战:

有些概念容易混淆,特别是当你学习过其他语言的时候。
很难找到学习的时间(有时候是动力)。
一旦当你理解了一些东西的时候,却很容易再一次忘记。
可以使用的工具甚多且经常变化,所以不知道从哪里开始入手。
幸运的是,这些挑战最终都可以被战胜。在这篇文章里,我将介绍 6 个思维技巧来帮你更快的学习 JavaScript ,让你成为一个更快乐更多产的程序员。

1.不要让将来的决定阻止你进步

对于很多学习 JavaScript 的人来说,他们问的第一个问题是选用哪个框架(现有框架非常多)。但是如果你还不熟悉原生的 JavaScript ,那这就是个不该问的问题。你会花费你全部的时间去查询不同的框架并且不会取得任何进展。

走出这个让人犹豫不决的陷阱的一个方法是要有一个学习的路线图。比如,要想成为一个前端开发人员,你的路线图大概是这样的:

把学习计划进一步拆分,你可以只用 HTML 和 CSS 做一个功能性的网页。了解其中的具体步骤,你会很容易知道现在需要关注的东西,因此不会浪费时间担心将来要学习的内容。

2.不要让自信把你骗进遗忘陷阱

在学习 JavaScript 的过程中,快速理解某个概念可能是最不利于你进步的一件事。请允许我解释一下。

当你理解一些东西并且觉得它言之有理的时候,你会倾向于立即学习下面的内容。可能你会理解下面的内容并继续向下学习。但是很快,你会发现你已经忘记了之前所学到的一些东西,因此你需要重新复习。你很快的瞥一眼之前的概念更新下记忆然后继续往后学习。但是,这次你又忘记了其他的一些东西。你会不停的反反复复直到你发现你完全的迷失了方向。你会感到气馁,休息一下后,你准备重新开始,却发现已经忘记了所有的东西。

幸运的是只需要简单的两步就可以解决这个问题:

1. 限制一次学习的内容总量

2. 认真的练习——写代码

当你学习一些新的概念的时候,一定要多尝试,多应用,多熟悉,甚至将它与其他的概念相结合。在你学习的示例中写代码非常重要,因为这有助于你深刻理解它。同时,限制一次学习的内容总量有助于你记住这些内容,因为记住较少的内容会更容易。

这个过程可能会比仅仅通读一遍就学习其它内容要花费更多的时间,然而实际上它需要的时间更少,因为你不需要来回反复。经过多次尝试,我终于掌握了这种方法。

3. 用正确的心态进行实战练习

很多人认为练习是件重复而又无趣的事情,所以他们常常会跳过练习试着走捷径。如果你试图在 JavaScript 的练习上走捷径,实际上你需要更长的时间来学习它。但是,怎样才能让练习变得更有趣,让你愿意去做练习呢?

尝试转换一下思路:

如果你学了一个新的 JavaScript 的概念却无法尝试,你会有什么样的感受?对于我个人而言,我会觉得懊恼,特别是在我花费了时间去理解它之后。就像一个孩子有了一件新的玩具却不能玩一样。

当你学一些新的 JavaScript 的知识时,试着像对待一个新玩具、一辆新车、一双新鞋或者其它你有兴趣尝试的东西一样。像玩一样练习,而不是像工作一样练习。用新技能做一些很棒的事情。给自己一些惊喜同时展示给你的朋友。

保持娱乐的心态,你会学的更快,记住的时间更长,而且你会觉得更有趣。

4.用Facebook的窍门找时间编程

人们常见的问题之一是没有时间去编程。但是这些人却可以在 Facebook , YouTube , Wikipedia 或者 Reddit 这样的网站上花费数小时的时间。不管你是不是也有这样的情况,其中都有值得学习的地方。

很多时候我只是想看一小会儿的 Facebook ,结果我却在那儿停留了好几个小时。为什么会这样呢?这恰恰是因为我并没有打算在那儿停留太长时间。万事开头难,我发现把目标降低会更容易投入。如果有人问我是否准备在 Facebook 上花费几个小时,我会说不,因为我没有那些时间。然而,我更愿意接受快速查看某件事情的想法,我就是这样被吸引进去的。

好消息是你可以用同样的心理优势去学习编程。不要试图花几个小时去编程,因为你找不到这样的时间。告诉自己只写三分钟的代码,你就不会再为找时间而挣扎了。

5. 思考地越慢,学地越快

这句话听上去有些违背常理,所以我会用一个故事来解释。

我的一个朋友曾经对 JavaScript 的某些特性感到困惑。我让他和我一起过一遍他知道的内容然后解释一下哪一部分让人困惑。当他检查代码片段的时候,我注意到他有些急躁。

“等等!”我说。“慢一点,跟我解释下这里的每一步。”

我的朋友接着向我解释了这段代码的作用。

我又一次打断他,“你还是太急了。再试一次,但是这一次,我需要你逐字逐句的跟我解释每行代码并且告诉我代码的作用。”

这一次,我的朋友能够更好的解释代码中发生的事情。其中的关键是他有花时间去逐步检查每行代码而不是企图一下子理解全部。

在这样的情况下,思考地越慢实际上能让你学地更快。

6.先用简单语言编写复杂代码

如果一段代码太复杂或者陌生,就先用简单语言写出来。这样,你可以在实际编写代码前弄清楚你想要代码做什么。这种方法有两个好处:

1.代码写起来会更容易更快因为你不需要总是停下来去思考它该怎样运行。

2.可以提前捕获 bug 因为你很清楚代码的作用。

结论

我们已经了解了快速学习 JavaScript 的几个方法,你也可以运用这些技巧去学习其他的技能。下面概括一下我们讲的内容:

不要担心将来的决定,要潜心学习。
用对待玩具的心态对待新技能会让练习更加有趣。
就像玩 Facebook , YouTube 或者 Wikipedia 那样,用小目标的方法找时间编程。
慢下来,步子小一点,你会学的更快。
你是怎样学习的呢?你有没有其他的一些秘诀。

文章转源于网络,仅供学习参考!

JavaScript学习中的挑战的更多相关文章

  1. javascript学习中自己对作用域和作用域链理解

    在javascript学习中作用域和作用域链还是相对难理解些,下面我关于javascript作用域和作用域链做一下详细介绍,给各位初学者答疑解惑. 首先我们介绍一下什么是作用域?  从字面上理解就是起 ...

  2. JavaScript 学习中

    邮箱的验证: <!DOCTYPE html><html>    <head>        <meta charset="UTF-8"&g ...

  3. L19深度学习中的优化问题和凸性介绍

    优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同. 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) ...

  4. JavaScript学习13 JavaScript中的继承

    JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...

  5. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  6. javascript 学习笔记之JQuery中的Deferred对象

    Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...

  7. Javascript学习2 - Javascript中的表达式和运算符

    原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...

  8. Javascript学习1 - Javascript中的类型对象

    原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个 ...

  9. JavaScript学习系列5 ---ES6中的var, let 和const

    我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中 ...

随机推荐

  1. TCP/IP知识点汇总

    1.HUB.Switch.Router在OSI模型中分别是第几层设备,各层的名称是什么? 2.TCP/IP 协议栈及 OSI 参考模型详解

  2. eclipse注释模板及格式化模板导入步骤

    1.点击Window->Preference->Java -> Code Style -> Formatter 2.点击右侧Import选择*.xml模板文件导入即可 3.如果 ...

  3. Find a point on a 'line' between two Vector3

    Find a point on a 'line' between two Vector3http://forum.unity3d.com/threads/find-a-point-on-a-line- ...

  4. VUE应用的一些感受

    方便,数据绑定太方便了. 一个组件一个.vue文件特别清晰. 讲真vue比angular好学多了. webpack打包最近看懂,通过一个主文件把require的文件都打进来.业务代码放build里,引 ...

  5. 51nod 1264 线段相交(几何)

    题目链接:51nod 1264 线段相交 如果两条线段相交,则需满足一条线段的一个端点在另一条线段上,或者 两条线段都分别跨越另一条线段延伸的直线上.(如果点p1位于直线p3p4的一边,而点p2位于该 ...

  6. guava学习--Ordering

    转载:http://www.cnblogs.com/peida/p/Guava_Ordering.html Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering ...

  7. Nexus私服忘记用户名密码,Nexus私服如何找回用户名密码

    Maven搭建私服用Nexus很方便.但是如果忘记了管理员的密码,如何处理呢?Nexus私服如何找回用户名密码? 1. 找到nexus-XXXYYYY-bundle/sonatype-work/nex ...

  8. mysql 二进制日志

      1.日志类型   二进制日志记录了所有对mysql数据库的修改事件,包括增删改事件和对表结构的修改事件.   2.配置使用二进制日志 在my.ini 配置 log-bin=mysql-bin   ...

  9. nginx 负载均衡、用数据库存储Session,来实现多站点共享Session[转]

    多站点共享Session常见的作法有: 1.使用.net自动的状态服务(Asp.net State Service); 2.使用.net的Session数据库: 3.使用Memcached. 4.使用 ...

  10. Linux系统真正的优势以及学习方法

    作为一名Linux爱好者,在Linux的世界中也算是半个老司机了,从桌面玩到服务器.从ubuntu到centos.从计算机到路由器,各种Linux的花俏玩法都略有体验.作者并非职业Linux选手,我仅 ...