如何快速成为JavaScript高手?之前我拿这个问题问过我的同事,也问过国内的一些JavaScript高手。

最近,我一直在拿这个问题问自己。之所以会有这个问题,我基于两个前提:第一、我自认为自己不笨;第二、我学习和使用JavaScript也有一段时间了,并且自己学习还算努力。

思来想去,我觉得我应该先回答下这个问题:如何提高自己的学习效率?

想象一下学校的场景,有一些知识,有的人就是学得比你快。为什么?可能他本来就比你聪明;可能他之前学过的、接触过的东西使他对这个知识有启发;可能他背地里比你花的功夫还多。不管哪一种形式,从旁观者的角度来看,他就是学得比你快,也就认为他的学习效率比你高。

排除第一个答案不讨论。我们来讨论下第二个和第三个答案。

答案二:“他之前学过的、接触过的东西使他对这个知识有启发”,我这里简单的归结为积累。

答案三:“他背地里比你花的功夫还多”,还有现象本身“他花的功夫比你少,学得比你还好”,关键字都落在了“功夫”二字上。如何下功夫、功夫下在什么地方?这又引出了一个新问题。

关于这个问题,纠结了这么多天,我的回答是:如何下功夫?动手!功夫下在什么地方?和工作有关的地方!

说到这,我又想起了我深受毒害的应试教育。应试教育缺乏的正是动手和实践知识的场所或曰方式。很多时候我总是懒于动手,为什么懒于动手?难道是我真的懒吗?我不承认,我不动手是因为我找不到动手的理由,或是不知道如何动手。拿写一个JavaScript库或框架为例,为什么我到现在还没有写一个JavaScript库?首先我找不到写它的理由,现在这么多流行、易用且被广泛使用的JavaScript库或框架了,有必要再写一个吗?就算我写了,公司会使用它吗?如果没有对其他库或框架的深刻理解和认识,只是把各个库或框架中的一些东西拼凑在一起,甚至不知道其中一个函数实现的内部原理,那能叫我写的吗?其次,我找不到入手的地方。在没有对其他框架有深刻认识,自己能找到其中的缺陷、不足而加以修正和实现之前,我找不到入手的地方。

解释下答案:

功夫下在和工作有关的地方,这需要有强烈的责任心和主人翁意识。我们需要深刻理解这句话,“功夫下在和工作有关的地方”不是说,每天把上司交给自己事情做完、没有bug、达到需求就可以了。而是要做得更好,我想提出3点,也给自己树立目标:

  1. 用最优的方案实现需求。在自己的已有知识结构、能力、经验上用最好的方式实现需求,在此基础上努力搜寻业界相关的解决方案比较优劣,选出最佳的方案,最终实现需求。
  2. 关心自己已做完工作,关注业界的相关新思想、新技术、新理念,把已完成的工作,用最新最优的方案予以重构,并在适当的时机在产品上得以实现。
  3. 关注自己所负责工作的未来,把产品当做自己的孩子,努力将他引向最美好的未来。努力将自己所负责的产品打造成为业界的标杆(特别是自己所负责的部分,那是自己影响圈内的事情)。

动手。如果你知道了功夫该下在什么地方,也自然知道了要动手做什么,动手也会成为快乐的事情。

不知道大家有没有这样的经历,当你有极大的渴望想把某件事情做好的时候,你会花很大的精力去研究怎样把事情做好,为此你会学习很多相关的东西,平时你可能花一周时间也学不会的东西,你花一个上午就学会了,还应用到了你要做到事情中,并且事后你会对所学过的东西印象深刻。

这,就是我对“如何提高学习效率”这个问题的回答。

很抱歉,写到这里我还几乎没有正面回答“如何快速成为JavaScript高手”这个问题,如果你已经有所收获了,我感到很欣慰。如果没有,再谈谈JavaScript,因为我目前还不算JavaScript高手,下面这段算画蛇添足也好,算狗尾续貂也罢。

语言层面:编程语言之间是想通的,至少高级语言是想通的(相对于机器语言和汇编语言),JavaScript是一门特殊的语言,既可面向过程、又可面向对象。有人喜欢它弱类型语言的特性,而将其语言本身的特性发挥得淋漓尽致。有人喜欢java这类纯面向对象语言的严谨,而使用一些功能函数将其包装成完全的面向对象,并采用它实现了一些常见设计模式。所以说,真正要精通JavaScript这门语言本身,需要对其他语言的一些理解(至少是了解)。鉴于目前JavaScript从业人员的构成,非计算机专业科班出身的同学可能需要努力补补课。

环境层面:JavaScript运行的环境目前有浏览器端和服务器端,将来可能有机会到嵌入式设备中。目前大部分应用主要集中在浏览器端,而浏览器厂商为了各自利益等各种历史原因造成的JavaScript运行环境兼容性问题,也是JavaScript从业人员较为头疼的问题。

业务层面:很多其他语言有功能完善的底层API、工具包,抱歉,JavaScript暂时没有(浏览器端、nodejs开始有雏形,希望commonJS规范能够一路走好)。所以各种库、框架对于一些基本业务需求都提供了类似但非相同的实现。一个优秀JavaScript程序员需要辨别各种框架或库中的业务实现,或编写出自己的业务实现。

综上,要在语言、环境、业务三个方面都精通,确实是需要花费很大的功夫。一个人的精力是有限的,其他语言积累几十年的东西,你想一个人在JavaScript得到实现是不太可能的。术业有专攻,不是说你是JavaScript高手,JavaScript的方方面面你都能做到最好。

故,我认为“如何快速成为JavaScript高手?”, 无解。无法快速!

“如何成为JavaScript高手”,动手,把功夫下在和工作有关的地方上!

运用JavaScript把工作做得最好,才是JavaScript高手!

怎样才能快速成为JavaScript高手的更多相关文章

  1. 如何成为一个javascript高手【转载】

      原文网址: http://www.cnblogs.com/keva/p/how-to-become-a-javascript-badass.html 英文网址:http://www.clientc ...

  2. 快速掌握JavaScript面试基础知识(三)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  3. 快速掌握JavaScript面试基础知识(二)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  4. java editor template Eclipse中的快速Java\JavaScript代码模板使用

    java editor template Eclipse中的快速Java\JavaScript代码模板使用 学习了:http://technicalsearch.iteye.com/blog/2150 ...

  5. 作为Java新手,如何才能快速的看透一个Java项目?

    前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感&quo ...

  6. 造轮子和用轮子:快速入门JavaScript模块化

    造轮子和用轮子:快速入门JavaScript模块化 前言 都说“不重复造轮子”,就像iPhone——它除了打电话还可以播放音乐——但是工程师不用从零开始做一个音乐播放功能,也许只要在iPhone的系统 ...

  7. UI设计小白怎样学才能快速入门?

    最近有很多同学问我,UI小白有什么捷径可以快速入门?其实我想说设计这门学科没有什么捷径,真的只有多学.多看.多练.多想.多做. 1.先学软件 如果你是小白,软件也不会用,那就先学软件,从PS开始,先看 ...

  8. 零基础:如何快速学习JavaScript,html+css技术

    前端开发要学的知识内容涉及的会很宽泛,虽然说主要是HTML.CSS和JavaScript这些基础知识点,但达妹今天想强调一下,学前端开发除了要学这些基础知识外,学员还要在这之上进行延伸和深入的去学,而 ...

  9. 快速了解JavaScript的基础知识

    注释 单行注释: // 单行注释 多行注释: /* 多行 注释 */ 历史上 JavaScript 可以兼容 HTML 注释,因此 <!-- 和 --> 也可以是单行注释. x = 1; ...

随机推荐

  1. MVC数据的注册及验证简单总结

    一.注解 注解是一种通用机制,可以用来向框架注入元数据,同时,框架不只驱动元数据的验证,还可以在生成显示和编辑模型的HTML标记时使用元数据. 二.验证注册的使用 1.Require:属性为Null或 ...

  2. Python|一文简单看懂 深度&广度 优先算法

    一.前言 以后尽量每天更新一篇,也是自己的一个学习打卡!加油!今天给大家分享的是,Python里深度/广度优先算法介绍及实现. 二.深度.广度优先算法简介 1. 深度优先搜索(DepthFirstSe ...

  3. leetcode-累加数(C++)

    累加数是一个字符串,组成它的数字可以形成累加序列. 一个有效的累加序列必须至少包含 3 个数.除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和. 给定一个只包含数字 '0'-'9'  ...

  4. win32绘制自定义类窗口导致绘制11个窗口的解决办法

    上网查了一圈也没有找到解决问题的办法,一旦创建了一个窗口,并且在过程函数中绘制窗口,尤其是一些非子窗口的自定义类窗口,都会生成11个窗口(算上主窗口就是12个),但是使用系统通用控件就不会有这种情况的 ...

  5. 【转载】完全版线段树 by notonlysuccess大牛

    原文出处:http://www.notonlysuccess.com/ 今晚上比赛就考到了 排兵布阵啊,难受. [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时 ...

  6. Python3 Tkinter-Text

    1.创建 from tkinter import * root=Tk() t=Text(root) t.pack() root.mainloop() 2.添加文本 from tkinter impor ...

  7. Java学习个人备忘录之异常

    概述 异常:是在运行时期发生的不正常情况. 在java中用类的形式对不正常情况进行了描述和封装对象. 描述不正常的情况的类,就称为异常类. 以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问 ...

  8. C++读取文件统计单词个数及频率

    1.Github链接 GitHub链接地址https://github.com/Zzwenm/PersonProject-C2 2.PSP表格 PSP2.1 Personal Software Pro ...

  9. (一)Model的产生及处理

    MVC的概念其实最早可以追溯到很久很久以前,并不是WEB开发过程中所首创, 但是,MVC也适合WEB上的开发,并真正的在WEB开发领域广泛应用.MVC的第一个字母M是Model,承载着View层和Co ...

  10. ACM 第二天

    A - Mishka and Contest Mishka started participating in a programming contest. There are n problems i ...