JavaScript简介

JavaScript是由Netscape公司开发的,最初的名字叫做Mocha,1995年9月改为LiveScript,当时的Java语言很流行,当年的12月,Netscape公司与Sun公司(Java语言的发明者和所有者)达成协议,允许Netscape将LiveScript改名为JavaScript,以此让JavaScript慢慢的流行起来。

随着JavaScript的发展,它自立门户,成为了一门独立的语言,同时也拥有了自己的语言规范——ECMAScript。现在它和Java之间没有啥关系了。

JavaScript是一种轻量级的,解释性的脚本语言,也可以称它为脚本语言。所谓的”脚本语言“(Script language),指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型程序(比如浏览器)的”脚本”。脚本作为纯文本存在和执行,它们不需要特殊的准备或编译即可运行。

JavaScript也是一种嵌入式(embedded)语言,目前已经嵌入JavaScript的宿主环境有多种,最常见的环境就是浏览器,另外还有服务器环境,也就是 Node 项目。 甚至还能在任意搭载了 JavaScript 引擎 的设备中都可以执行。浏览器中嵌入了 JavaScript 引擎,有时也称作 JavaScript 虚拟机。从语法角度看,JavaScript 语言是一种“对象模型”语言。各种宿主环境通过这个模型,描述自己的功能和操作接口,从而通过 JavaScript 控制这些功能。但是,JavaScript 并不是纯粹的“面向对象语言”,还支持其他编程范式(比如函数式编程)。这导致几乎任何一个问题,JavaScript 都有多种解决方法。继续往后学JavaScript,你会诧异于 JavaScript 语法的灵活性。

引擎是如何工作的?

引擎很复杂,但是基本原理很简单。

  1. 引擎(通常嵌入在浏览器中)读取(“解析”)脚本。
  2. 然后将脚本转化(“编译”)为机器语言。
  3. 然后这机器语言代码快速地运行。

引擎会对流程中的每个阶段都进行优化。它甚至可以在运行时监视编译的脚本,分析数据流并根据这些对机器代码应用优化。最后,脚本会执行地非常快。

现代的 JavaScript 是一种“安全”语言。它不提供对内存或 CPU 的底层访问,因为它最初是为浏览器创建的,不需要这些功能。

JavaScript 的能力很大程度上依赖于它执行的环境。例如:Node.js 允许 JavaScript 读写任意文件、执行网络请求等。

浏览器中的 JavaScript 可以做与网页操作、用户交互和 Web 服务器相关的所有事情。

例如,浏览器中的 JavaScript 可以完成下面这些事:

  • 在网页中插入新的 HTML,修改现有的网页内容和网页的样式。
  • 响应用户的行为,响应鼠标的点击或移动、键盘的敲击。
  • 向远程服务器发送网络请求,下载或上传文件(所谓 AJAXCOMET 技术)。
  • 获取或修改 cookie,向访问者提出问题、发送消息。
  • 记住客户端的数据(本地存储)。

但浏览器中的JavaScript并不是万能的,有些事情,JavaScript是做不了的,比如:网页中的 JavaScript 不能读、写、复制及执行用户磁盘上的文件或程序。它没有直接访问操作系统的功能。JavaScript 通过互联网可以轻松地和当前网页域名的服务器进行通讯。但是从其他网站/域名的服务器中获取数据的能力是受限的。尽管这可以实现,但是需要来自远程服务器的明确协议(在 HTTP 头中)。这也是为了用户的数据安全。

浏览器环境外的 JavaScript 一般没有这些限制。例如服务端的 JavaScript 就没有这些限制。现代浏览器还允许安装可能会要求扩展权限的插件或扩展。

JavaScript的与众不同之处

这三点值得说一说

  • 和 HTML/CSS 完全的集成。
  • 使用简单的工具完成简单的任务。
  • 被所有的主流浏览器支持,并且默认开启。

比JavaScript更好的语言

不同的人喜欢不同的功能,JavaScript 的语法也不能够满足所有人的需求。这是正常的,因为每个人的项目和需求都不一样。所以,最近出现了很多不同的语言,这些语言在浏览器中执行之前,都会被编译(转化)成 JavaScript。

现代化的工具使得编译速度非常快速且透明,实际上允许开发人员使用另一种语言编写代码并将其自动转换为 JavaScript。

这些编程语言的例子有:

  • CoffeeScript 是 JavaScript 的语法糖,它语法简短,明确简洁。通常使用 Ruby 的人喜欢用。
  • TypeScript 将注意力集中在增加严格的数据类型。这样就能简化开发,也能用于开发复杂的系统。TypeScript 是微软开发的。
  • Flow 也添加了数据类型,但是以一种不同的方式。由 Facebook 开发。
  • Dart 是一门独立的语言。它拥有自己的引擎用于在非浏览器环境中运行(如:手机应用),它也能被编译成 JavaScript 。由 Google 开发。

还有很多其他的语言。当然,即使我们在使用这些语言,我们也需要知道 JavaScript。因为学习 JavaScript 可以让我们真正明白我们自己在做什么。

总结

  • JavaScript 最开始是为浏览器设计的一门语言,但是现在也被用于很多其他的环境。
  • 现在,JavaScript 是一门在浏览器中使用最广、并且能够很好集成 HTML/CSS 的语言。
  • 有很多其他的语言可以被编译成 JavaScript,这些语言还提供了更多的功能。最好还是了解一下这些语言,至少在掌握了 JavaScript 之后简单地看一下。

参考:

现代JavaScript教程https://zh.javascript.info/

网道的JavaScript教程http://wangdoc.com/javascript/

这两个教程写的很不错,阔以看一看,学习一下!另外我在推荐一下廖雪峰的JavaScript教程