当人们尝试学习 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. ★Java多线程编程总结 系列 转

    下面是Java线程系列博文的一个编目:   Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Jav ...

  2. ubuntu15.04 安装 pylab失败,先记下来,漫漫看

    pydo@planpls:/var/python/web2py$ pip install pylab Downloading/unpacking pylab Downloading pylab-0.1 ...

  3. 对数组进行malloc动态分配的一些总结

    笔者在处理程序奔溃问题的时候,遇到栈溢出的情况,栈溢出最常见的情况是:迭代调用和数组过大.数组占用占空间,所以改为了malloc方式放在堆上.想想,就想整理一下关于对多维数组的动态分配问题. 一,堆和 ...

  4. HBase之计数器

    HBase计数器 #创建counters表 列族['daily','weekly','monthly'] hbase(main):001:0> create 'counters','daily' ...

  5. oracle中如何创建dblink

    当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据.下面讲介绍如何在本地数 ...

  6. SSH原理与运用

    SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...

  7. 初学者:JSP登陆界面

    学生登陆查询系统 1 程序的主要功能及特点 实现一个登录界面的基本功能,具体要求: 登录界面login.jsp含有表单,用户能够输入用户名和密码,并提交表单给verify.jsp. Verify.js ...

  8. sphinx索引文件进一步说明——最好是结合lucene一起看,直觉告诉我二者本质无异

    摘自:http://blog.csdn.net/cangyingzhijia/article/details/8592441 Sphinx使用的文件包括 "sph", " ...

  9. 用纯Css作三角形

    <style> //向上三角形 .triangle_up{ width:0; height:0; border-left:30px solid transparent; border-ri ...

  10. 2个集合比较——最高效解法(Java实现)

    优点:时间复杂度为O(n)级别: 缺点:只适用于Int,以及Int的数字不能过大,集合元素数量不能过多. 理论分析: 两个集合的元素之和以及之积相同则,这两个集合相等.(前提是两个集合的数量一致) 证 ...