快速学习JavaScript的6个思维技巧


Posted in Javascript onOctober 13, 2015

我们在学习JavaScript,或其他任何编码技能的时候,往往是因为这些拦路虎而裹足不前:

  • 有些概念可能会造成混淆,尤其当你是从其他语言转过来的时候。
  • 找不到时间(有时是动力)学习。
  • 很容易忘记已经理解了的东西。
  • 工具多又在不断变化,所以不知道从哪里开始。

幸运的是,这些拦路虎是可以被识别,并消灭的。在这篇文章中,我将介绍六个思维技巧来帮助你更快地学习JavaScript,并成为一个更快乐、更富有成效的程序员。

1.不要让未来的决策阻止你现在前进的方向

很多人学习JavaScript,问的第一个问题往往是“我应该使用哪个框架?”。但是,如果你还没有掌握最最基础的JavaScript,那这显然是一个错误的问题。你将你所有的时间用来研究不同的框架,于是,你开始停滞不前。

帮助摆脱这种陷阱的方法之一是画一个你需要学习的路线图。例如,要想成为一个前端开发者,你的路线图可能是这样的:

快速学习JavaScript的6个思维技巧

进一步分解的话,你可以做一个只有HTML和CSS的功能性web页面。然后像这样一步步列出每个步骤,那么对于现在应该专注于做什么,就一目了然了。你也不会浪费时间去担心应该以后操心的事情。

如果你觉得这种路线图很有用,那么可以看看我以前写的《learning road map for becoming a front-end developer》,里面介绍得很详细。(注:对于学习JavaScript的路线,你也可以参考学习《学习JavaScript编程语言的8张思维导图分享》这篇文章)

2.不要让自信诱骗你忘事

快速了解一个概念,也许是学习JavaScript的道路上最影响你进步的事情之一。下面请允许我解释一下。

当你读到某些东西,你觉得的确如此的,那么很可能就会直接跳到下一个内容。然后你觉得接下来这个内容也非常浅显易懂,于是继续往下看。但很快,你会 发现你已经忘记了前面自认为已经掌握的内容,所以只能回过头去温习。你快速地浏览了一遍,感觉又明白了,然后继续前进。但是你又发现自己忘记了别的东西。 你一直处在这个循环中,直到最终迷失了自己。你不由地气馁,想着那先休息一下吧,然而当你休息完了再回来的时候,你发现你已经忘记了所有的内容。

解决这个问题,也很简单,只需要两步:

  1. 限制一次学习的量。
  2. 实践——实际编写代码。

当你去学习一个新概念的时候,一定要试用它,摆弄它,熟悉它,甚至将它和其他概念结合起来。而且实际输出到示例代码中非常重要,因为这能帮助你消化吸收它。此外,限制一次学习的量,有助于记住资料,道理也很简单,东西越少越好记。

虽然这种学习进程会让你感觉所需的时间更多,但实际上恰恰相反,因为你不再需要走那么多的回头路。我也是经过了很多次惨不忍睹的教训才明白了这个技巧。

3.用正确的心态去做练习

很多人认为反复的练习特别无聊,所以他们通常会选择跳过或尝试走捷径。如果你快进JavaScript练习,那么最终反而需要更多的学习时间。试着让练习变得令人感兴趣,这样是不是就不会那么抗拒呢?

试着转变心态:

如果让你学习一个新的JavaScript概念,却不能试试,会怎么样?你是什么感觉?从我个人而言,我会特别懊恼。这就像一个孩子得到一个新的玩具,却不能玩一样。

当你学习JavaScript中一些新内容的时候,试着将它当作新玩具,新车,新鞋,或者其他任何你有兴趣尝试的东西。然后不要将练习当作工作,要将练习当作是玩耍。用新技能去尝试一些很酷的东西。让你自己都不由的惊叹。然后显摆给你的朋友看。

用一种游戏的心态,你会学得更快,记得更久,拥有更多的乐趣。

4.写代码的时间魔法

在学习JavaScript中最常见的问题是,找不到时间写代码。但是,与此同时,却有大把大把的时间浏览各种网站,如Facebook,YouTube,维基百科和Reddit等。

我有好几次,一开始只是想打开Facebook,看一小会,然后不知不觉就发现已经看了几个小时。这是怎么发生的呢?或许正是因为我并不打算看很长 时间。万事开头难,一旦开了头,后面陷进去就变得容易多了。但是如果有人问我,是否愿意花时间在Facebook上,我会坚决地说不,因为我本身时间就不 够用。然而,只允许看一会会时间往往更容易接受,然后深陷其中。

好消息是,你也可以利用同样的心理来学习写代码。一开始不要想着要编码几小时,因为你永远找不到这么多的时间。就告诉自己你要去写3分钟的代码。这样你永远也不用愁挤不出时间了。

5.思考得更慢,学得更快

这听起来貌似有悖常理,下面我会用一个小故事解释。

我的一个朋友曾经对JavaScript的某个功能感到困惑。于是,我让他详细地说一遍哪些是他知道的,然后给他解释他感到困惑的那部分。不过,当他检查代码片段的时候,我注意到有一段代码,他说得非常仓促。

“等一下!”我说, “慢点讲,每一步都详细地说一下。”

我的朋友继续给我做代码发生了什么的全面总结。

我只好再次叫住他。 “你还是太仓促了。再试一次,但这次,我希望你能从字面上去检查每一行代码,告诉每一行的代码都发生了什么。”

这次,我的朋友终于能够很好地解释代码中正在发生什么。问题的关键是,他终于可以一步一步地检查了代码片段,而不是囫囵吞枣想要一次性理解所有代码。

在类似于这样的情况下,思考得更慢实际上能让你学得更快。

6.首先用简明的语言来写复杂的代码

如果碰到一段复杂的或你不熟悉的代码,那么先用通俗易懂的语言写出来。这样一来,你就可以在写代码之前明确地知道你想要代码做什么。这么做有两个好处:

  • 代码更易写,因为你不需要总是停下来想,你想要它表现什么。
  • 在bug发生之前就能捕捉到,因为你对代码应该做什么有一个明确的概念。

结论

我们已经讨论了一堆如何更快地学习JavaScript的方法,而且你也可以将这些技巧应用到其他的技能上。下面来回顾一下:

  • 不要担心以后会做什么决策,先好好深入学习。
  • 将新技能当作玩具一般快乐地练习。
  • 以小承诺的方式找时间来写代码,就像你一开始安慰自己只逛一小会时间网站。
  • 慢下来,步子迈的越小,学得越快。

对了,你是怎么学习的?你有什么好的技巧吗?欢迎大家进行讨论。

Javascript 相关文章推荐
Jquery动态添加及删除页面节点元素示例代码
Jun 16 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
Jun 19 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
JS实现让访问者自助选择网页文字颜色的方法
Feb 24 Javascript
基于javascript实现图片预加载
Jan 05 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
js实现截图保存图片功能的代码示例
Feb 16 Javascript
Javascript之图片的延迟加载的实例详解
Jul 24 Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 Javascript
基于javascript的无缝滚动动画1
Aug 07 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 Javascript
有关json_decode乱码及NULL的问题
Oct 13 #Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 #Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 #Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
Oct 13 #Javascript
JS实现的简洁二级导航菜单雏形效果
Oct 13 #Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
Oct 13 #Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 #Javascript
You might like
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
vue中的scope使用详解
2017/10/29 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
用python解压分析jar包实例
2020/01/16 Python
postman和python mock测试过程图解
2020/02/22 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
美术课外活动总结
2014/07/08 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
预备党员群众意见
2015/06/01 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书