在 JavaScript 之前,网页主要是静态的,任何交互性都必须在服务器端处理,导致用户体验笨拙和缓慢。JavaScript 的发明是由于需要向网页添加更多动态和交互功能。
1995 年 5 月,Brendan Eich 被指派开发一种新的脚本语言,这种语言将补充 Java 的功能,使Web 浏览器能够实现动态内容和交互性。Eich 在短短 10 天内完成了这种语言的首个版本。这种快速开发是为了满足网景浏览器 2.0 的紧迫发布日程。
这种紧迫开发日程的背后原因是网景与微软之间的浏览器战争。网景希望通过快速增强 Web 的交互性来保持对 Internet Explorer 的优势。这种语言最初被称为 Mocha,后来更名为 LiveScript,最终在 1995 年 9 月随网景浏览器 2.0 B3 一起发布。到了同年 12 月,它正式更名为 JavaScript。这是网景出于营销考虑,利用了 Java 的流行度,尽管这两种语言在设计和目的上有很大的不同。
多年来,JavaScript 已经从一个简单的脚本语言成长为一种强大的、成熟的编程语言,能够创建复杂的 Web 应用程序、服务器端应用程序(使用Node.js)、移动应用程序,甚至是游戏。
随着 JavaScript 的普及增加,对其标准化的需求也随之增长。这导致了 ECMAScript 标准的创建。标准化使 JavaScript 在不同的Web浏览器中更加一致和可靠。
此外,JavaScript 框架和类库的出现,如 jQuery、Angular、React 和 Vue,极大地简化了复杂Web应用程序的开发,使 JavaScript 成为 Web 开发人员不可或缺的工具。
下图列举了 JavaScript 的最重要特征。
图片
01 解释型语言
JavaScript 代码由浏览器或 JavaScript 引擎执行,而不是事先编译成机器语言。这使得它在不同平台上具有很高的可移植性。V8 等现代引擎利用即时 (JIT) 技术将代码编译成可直接执行的机器代码。
02 函数是一等公民
在 JavaScript 中,函数被视为一等公民,这意味着它们可以存储在变量中,可以作为参数传递给其他函数,也可以从函数中返回。
03 动态类型
JavaScript 是一种松散类型或动态语言,这意味着我们不必提前声明变量的类型,而且类型可以在运行时改变。
04 客户端执行
JavaScript 支持异步编程,允许在后台运行读取文件、HTTP 请求或查询数据库等操作,并在完成后触发回调或承诺。这在网络开发中对提高性能和用户体验特别有用。
05 基于原型的 OOP
与基于类的面向对象语言不同,JavaScript 使用原型进行继承。这意味着对象可以从其他对象继承属性和方法。
06 自动垃圾回收
JavaScript 中的垃圾回收是一种自动内存管理。垃圾回收的主要目的是回收程序不再使用的对象所占用的内存,这有助于防止内存泄漏并优化应用程序的性能。
07 与其他语言相比
JavaScript 与 Python 或 Java 等编程语言相比比较特殊,因为它是网络开发的主要语言。
Python 以提供良好的代码可读性和多功能性著称,Java 以其结构性和健壮性著称,而 JavaScript 是一种解释型语言,无需编译即可直接在浏览器上运行,强调灵活性和动态性。
08 与 TypeScript 的关系
TypeScript 是 JavaScript 的超集,这意味着它通过向 JavaScript 语言添加功能(最显著的是类型注解)来扩展 JavaScript。这种关系允许任何有效的 JavaScript 代码也被视为有效的 TypeScript 代码。
09 流行的 JavaScript 框架
React 以其灵活性和大量社区驱动的插件而闻名,而 Vue 则简洁直观,具有高度集成和响应性功能。另一方面,Angular 为企业级 JS 开发提供了一套严格的开发规范。