深入理解 JavaScript 语法——从头讲起

这是深入理解 JavaScript 语法合集的第一篇。

前言(从设计一门语言讲起)

其实设计一门语言可能对于我们初学者来说都还比较遥远。但毋庸置疑的是,站在一门语言的顶端去学习它,模仿设计者去理解它的设计理念、观摩它的运行轨迹能对学习这门语言起到事半功倍的效果。

作为一个设计者,我们的思路常常是这样的:

  • 分析清楚语言设计的目的
  • 根据这个目的,我们需要设计一个什么类型的语言?是脚本语言?标记语言?命令式语言?还是全功能语言?

接下来,我们将思考我们的语言应该有哪些功能模块:

(1)基本语法

  • 基本数据类型
  • 变量
  • 逻辑控制语句
  • 运算符
  • 注释
  • 函数

(2)数组、枚举、集合
(3)常用API
(4)语言特性

  • 编程模式
  • 语言自身特性

(5)代码组织、模块加载、库管理
(6)容错处理(常见手段)

  • 异常
  • 断言
  • 日志
  • 调试
  • 单元测试

(7)输入输出和文件处理
(8)回调机制
(9)序列化和反序列化
(10)进阶特性

  • 并发编程
  • 元数据

(11)库和框架

上述的步骤是当你设计一门语言时需要考虑的一些功能模块。我们搞清楚了语言的主要功能模块后,接下来我们分析一下即将深入学习的 JavaScript。

分析 JavaScript

大家都知道,早期 JavaScript 出现的主要目的是处理服务器端语言负责的一些输入验证操作。但是随着 Web 应用的迅速发展,浏览器端运行着越来越多的复杂的页面以及复杂的交互。显然, JavaScript 的作用已经迫不得已的发生了巨大的变化。

JavaScript 和大部分语言一样,也拥有上述第一个模块:基本语法。使用各种类型的变量来表示(存储)页面数据,使用操作符来对数据进行简单的操作。而对于函数,在 JavaScript 中,它起着极其重要的作用。

它也有上述的第二个模块,有数组,有集合。但是它作为一门弱类型语言,没有枚举类型。(不过我们可以通过一定的方式模拟枚举类型所具有的特点)。对于第四个模块,JavaScript 有许多的特性,它拥有闭包,匿名函数,元编程等。

当然,对于完整的 JavaScript 实现,它包括核心(ECMAScript)、DOM 以及 BOM。它们分别是用来提供核心功能,访问和操作页面的方法和接口以及提供与浏览器交互的方法和接口。

好了,讲了这么多,需要说明的是,接下来我并不打算像 规范 那样对语法面面俱到。我将会按照上面的设计模块大致路线进行推进。然后从核心到 DOM、BOM。

这篇文章的目的

这篇文章的目的是想让大家也能学会站在一个比较高的地方去俯瞰整个语言(需要学习的东西)的全貌,对整体有个认识。这样才能保证自己在学习的过程中抓住重点,也不至于让自己掉到细节的坑里爬不起来。

会学站在设计者的角度去思考,我设计这个模块的作用是什么呢?为什么用它来实现而不用别的来实现?它有什么特别的地方?我们要在思考这些问题的时候不断地深入去理解这门语言的设计内涵。这样才能真正的深入理解这门语言的精髓。

最后

实不相瞒,我也是一名 JavaScript 的初学者,仍然在不断的向 JavaScript 的深入迈去,不断地去学习然后又不断地探索。我知道出错误是在所难免的,但是也不能因为会出错而不去探索。所以,如果我有表述的不明确甚至是错误的地方,希望大家能够多花一点点时间留言告知我一声,我及时更正。也非常欢迎大家能够多留言和我讨论你的方法、你的见解,我们一起成长呀~

Vue3 出来挺久了,作为火爆的前端框架,使用 TypeScript 实现的它也让很多前端招聘对 TypeScript 做了硬性要求。于是很多人说,还学什么 JavaScript 啊,直接学 TypeScript 好了。过了几个月后,这一群人又开始学习别的语言了。周而复始,一年、两年甚至很多年后,这一群人还是‘初级程序员’,什么都没能学会。

他问,“如果用 5 年的时间学习数据库,你能不能成为这个领域的专家?”

我说,“应该可以吧。”

他说,“你现在 25,5 年后也才 30,30 岁就能成为某个领域的专家,为什么不去做呢?你看看周围有多少 30 岁的人还一事无成,而那个时候的你已经是数据库专家了。”

一起加油!


这是深入理解 JavaScript 语法合集的其中一篇,其它合集:
2. 你真的掌握了 JavaScript 变量和类型嘛?(上)
3. 你真的掌握了 JavaScript 变量和类型嘛?(下)
4. JavaScript 的原型和原型链
5. JavaScript 中的对象

参考文章:
1.如何学习一门编程语言-2018-01-08 by 慕课网
2.我三年半连升了三级-2020-03-05 by 码农翻身

推荐阅读:
1.ECMAScript 6 — New Features: Overview & Comparison by rse

有问题?发送 issues 给我~

0%