简介
# 1.1 JavaScript简介
# 1.1.1 JavaScript特性
JavaScript是一种脚本语言,以纯文本形式提供和执行,不需要特殊的准备或编译即可运行
JavaScript可以被直接写在网页的HTML中,在页面加载时自动执行
ECMAScript是JavaScript的语言规范
JavaScript 不仅可以在浏览器中执行,也可以在服务端执行,甚至可以在任意搭载了 JavaScript 引擎 的设备中执行
# JavaScript 引擎
- 有时也称作“JavaScript 虚拟机”
- 不同的引擎有不同的“代号”
- 引擎的工作流程
- 引擎(如果是浏览器,则引擎被嵌入在其中)读取(“解析”)脚本
- 引擎将脚本转化(“编译”)为机器语言
- 机器代码快速地执行
# JavaScript独特性
JavaScript 是将这三件事结合在一起的唯一的浏览器技术
- 与 HTML/CSS 完全集成
- 简单的事,简单地完成
- 被所有的主流浏览器支持,并且默认开启
# 1.1.2 浏览器中的JavaScript
JavaScript 的能力很大程度上取决于它运行的环境。例如,Node.js 支持允许 JavaScript 读取/写入任意文件,执行网络请求等的函数
# 浏览器中JavaScript功能
浏览器中的 JavaScript 可以做与网页操作、用户交互和 Web 服务器相关的所有事情
- 在网页中添加新的 HTML,修改网页已有内容和网页的样式
- 响应用户的行为,响应鼠标的点击,指针的移动,按键的按动
- 向远程服务器发送网络请求,下载和上传文件(所谓的 AJAX 和 COMET 技术)。
- 获取或设置 cookie,向访问者提出问题或发送消息
- 记住客户端的数据(“本地存储”)
# 浏览器中JavaScript限制
为了用户的(信息)安全,在浏览器中的 JavaScript 的能力是受限的。目的是防止恶意网页获取用户私人信息或损害用户数据
- 网页中的 JavaScript 不能读、写、复制和执行硬盘上的任意文件。它没有直接访问操作系统的功能
- 不同的标签页/窗口之间通常互不了解
- JavaScript 可以轻松地通过互联网与当前页面所在的服务器进行通信。但是从其他网站/域的服务器中接收数据的能力被削弱了,需要来自远程服务器的明确协议(在 HTTP header 中)
# 1.1.3 JavaScript的上层语言
出现了许多新语言,这些语言在浏览器中执行之前,都会被 编译(转化)成 JavaScript。现代化的工具使得编译速度非常快且透明,实际上允许开发者使用另一种语言编写代码并会将其“自动转换”为 JavaScript。
- CoffeeScript 是 JavaScript 的一种语法糖。它引入了更加简短的语法,使我们可以编写更清晰简洁的代码。通常,Ruby 开发者喜欢它。
- TypeScript 专注于添加“严格的数据类型”以简化开发,以更好地支持复杂系统的开发。由微软开发。
- Flow 也添加了数据类型,但是以一种不同的方式。由 Facebook 开发。
- Dart 是一门独立的语言。它拥有自己的引擎,该引擎可以在非浏览器环境中运行(例如手机应用),它也可以被编译成 JavaScript。由 Google 开发。
- Brython 是一个 Python 到 JavaScript 的转译器,让我们可以在不使用 JavaScript 的情况下,以纯 Python 编写应用程序。
- Kotlin 是一个现代、简洁且安全的编程语言,编写出的应用程序可以在浏览器和 Node 环境中运行。
# 1.1.4 总结
- JavaScript 最开始是专门为浏览器设计的一门语言,但是现在也被用于很多其他的环境。
- JavaScript 作为被应用最广泛的浏览器语言,且与 HTML/CSS 完全集成,具有独特的地位。
- 有很多其他的语言可以被“编译”成 JavaScript,这些语言还提供了更多的功能。建议最好了解一下这些语言,至少在掌握了 JavaScript 之后大致的了解一下。