快速学习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 相关文章推荐
新浪中用来显示flash的函数
Apr 02 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
Jan 04 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
Jul 09 Javascript
layui表格数据重载
Jul 27 Javascript
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
在node环境下parse Smarty模板的使用示例代码
Nov 15 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
关于better-scroll插件的无法滑动bug(2021通过插件解决)
Mar 01 Javascript
Ajax实现三级联动效果
Oct 05 Javascript
处理canvas绘制图片模糊问题
May 11 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
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
完美的php分页类
2017/10/24 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
介绍Python中内置的itertools模块
2015/04/29 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
师范生实习的个人自我鉴定
2013/10/20 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
作文评语集锦
2014/12/25 职场文书
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang