来,来,来,组队了!
接下来一段时间里,我们一起学习 JavaScript。对我来说,应该是重学 JavaScript。
为什么要重学?
第一,我做 Node.js 开发也有一段时间了,回过头想想,每天都是忙于工作,忙于业务,而且项目很单一,学不到什么知识,倒学会了 CURD,技术上很难有突破。后来又有各种需求,用到不同技术,我成了全干程序员,Node.js 后端、安卓开发、Web 前端、小程序等等,做这么多事肯定不会很深入到技术本身,都是为了解决业务。同时,也没什么时间好好深入学习。
第二,其实在做 Node.js 之前,我一直做安卓开发。当时做后端的同事辞职了,一时间没有招到人,于是我就转去做了 Node.js 后端开发。当时对 Node.js 不了解,项目又在手上,所以 Node.js 知识、JavaScript、框架等等都是现学现卖的,甚至一度连 JavaScript 和 Node.js 边界都分不清。这导致一个问题,我所学到的知识很零散,不成体系,存在一定的知识盲区。
第三点,我应该算是一个野生程序员,对计算机的各方面技术都非常感兴趣,但几乎都是自学,走了很多弯路。重学 JavaScript 和写文章,是为了记录学习过程,谈谈我的想法,和大家一起分享。
学什么?
我计划进行一个体系化学习,主要学习 JavaScript 语言特性,暂不涉及具体的实战项目。从最基础的变量开始,然后到对象、函数、类等等,争取涵盖每个核心语法、每个特性、每个细节。我还想试着深入语言本身,研究它背后运行的原理。
在学习时,我们融合各个版本的语法,包括 ES5 和 ES6 及之后的版本。因为 ES6 语法已经发布 6 年了,不管是前端还是后端,基本上都兼容了新语法特性,它已经很成熟了,所以不用刻意区分具体版本分开学习,但不同版本的重要特性,我们还是稍微要了解,以后遇到问题时更容易找到原因。
我将从 Node.js 后端的角度出发学习 JavaScript,对于 ECMAScript 标准的核心语法,前端和后端是没有区别的,所以,并不影响学习。
难点
JavaScript 可能是世界上最奇怪的语言,甚至有点反人类,具体原因后面慢慢讨论。
学习 JavaScript 的难点在于它独一无二的特性,我觉得有以下四点:
-
动态
为什么说 JavaScript 是一门动态语言,动态的含义是很丰富的。
-
作用域 作用域有很多种情况,还可以改变,对于老司机,也不一定说得清楚。
-
对象和函数 对象有原型,原型的继承关系很复杂,又和作用域有千丝万缕的关系。函数就是对象,这让人分不清楚。
-
异步 此异步非彼异步,这是一个非常难理解的概念。
正是这些语言特性,让它区别于其他语言,即是最精华的部分,也是最难理解的部分。特别是从 Java 等面向对象语言转过来的开发者,再接受 JavaScript 的思想,是相当痛苦的过程。
分享方式
我计划每个知识点一篇文章或一个小视频的方式分享,如果有说得不对的地方,请大家指出,如果你有更好的想法,也欢迎分享,我们一起探讨,一起进步。