咱们一块儿来聊一下 JavaScript,用它能作什么,它有哪些特性,以及一些跟它配合使用的技术。javascript
JavaScript 最初的目的是为了“赋予网页生命”。java
这种编程语言咱们称之为脚本。它们能够写在 HTML 中,在页面加载的时候会自动执行。typescript
脚本做为纯文本存在和执行。它们不须要特殊的准备或编译便可运行。编程
这方面,JavaScript 和 Java 有很大的区别。浏览器
为何叫 JavaScript?安全
JavaScript 在刚诞生的时候,它的名字叫 “LiveScript”。可是由于当时 Java 很流行,因此决定将一种新语言定位为 Java 的“弟弟”会有助于它的流行。服务器
随着 JavaScript 的发展,它已经变成了一门独立的语言,同时也有了本身的语言规范 ECMAScript。如今,它和 Java 之间没有任何关系。微信
如今,JavaScript 不只仅是在浏览器内执行,也能够在服务端执行,甚至还能在任意搭载了 JavaScript 引擎 的设备中均可以执行。cookie
浏览器中嵌入了 JavaScript 引擎,有时也称做 JavaScript 虚拟机。网络
不一样的引擎有不一样的“代号”,例如:
上面这些名称很容易记忆,由于常常出如今网上开发者的文章中。咱们也会用到这些名称。例如:某个新的功能,若是“JavaScript 引擎 V8 是支持的”,那么咱们能够认为这个功能大概能在 Chrome 和 Opera 中正常运行。
引擎是如何工做的?
引擎很复杂,可是基本原理很简单。
- 引擎(一般嵌入在浏览器中)读取(“解析”)脚本。
- 而后将脚本转化(“编译”)为机器语言。
- 而后这机器语言代码快速地运行。
引擎会对流程中的每一个阶段都进行优化。它甚至能够在运行时监视编译的脚本,分析数据流并根据这些对机器代码应用优化。最后,脚本会执行地很是快。
现代的 JavaScript 是一种“安全”语言。它不提供对内存或 CPU 的底层访问,由于它最初是为浏览器建立的,不须要这些功能。
JavaScript 的能力很大程度上依赖于它执行的环境。例如:Node.js 容许 JavaScript 读写任意文件、执行网络请求等。
浏览器中的 JavaScript 能够作与网页操做、用户交互和 Web 服务器相关的全部事情。
例如,浏览器中的 JavaScript 能够完成下面这些事:
为了用户的(信息)安全,在浏览器中的 JavaScript 的能力是有限的。这样主要是为了阻止邪恶的网站得到或修改用户的私人数据。
这些限制的例子有:
网页中的 JavaScript 不能读、写、复制及执行用户磁盘上的文件或程序。它没有直接访问操做系统的功能。
现代浏览器容许 JavaScript 作一些文件相关的操做,可是这个操做是受到限制的。仅当用户使用某个特定的动做,JavaScript 才能操做这个文件。例如,把文件“拖”到浏览器中,或者经过 <input>
标签选择文件。
JavaScript 有不少方式和照相机/麦克风或者其余设备进行交互,可是这些都须要提早得到用户的受权许可。因此,启用了 JavaScript 的网页应该不会偷偷地启动网络摄像头观察你,并把你的信息发送到美国国家安全局。
不一样的浏览器标签页之间基本彼此不相关。有时候,也会有一些关系。例如,一个标签页经过 JavaScript 打开另一个新的标签页。但即便在这种状况下,若是两个标签页打开的不是同一个网站(域名、协议或者端口任一不相同的网站),他们都不可以相互通讯。
这就是“同源策略”。为了解决“同源策略”问题,两个标签页必须都包含一些处理这个问题的特殊的 JavaScript 代码,并均容许数据交换,这样才可以实现两个同源标签页的数据交换。本教程会讲到这部分相关的知识。
这个限制也是为了用户的信息安全。例如,用户打开的 http://anysite.com
网页的 JavaScript 确定不能访问 http://gmail.com
(另一个标签页打开的网页)也不能从那里窃取信息。
JavaScript 经过互联网能够轻松地和当前网页域名的服务器进行通信。可是从其余网站/域名的服务器中获取数据的能力是受限的。尽管这能够实现,可是须要来自远程服务器的明确协议(在 HTTP 头中)。这也是为了用户的数据安全。
浏览器环境外的 JavaScript 通常没有这些限制。例如服务端的 JavaScript 就没有这些限制。现代浏览器还容许安装可能会要求扩展权限的插件或扩展。
至少有 3 件事值得一提:
+ 和 HTML/CSS 彻底的集成。 + 使用简单的工具完成简单的任务。 + 被全部的主流浏览器支持,而且默认开启。
知足这三条的浏览器技术也只有 JavaScript 了。
这就是为何 JavaScript 不同凡响!这也是为何它是建立浏览器界面的最广泛的工具。
此外,JavaScript 还支持建立服务器,移动端应用程序等。
不一样的人喜欢不一样的功能,JavaScript 的语法也不可以知足全部人的需求。
这是正常的,由于每一个人的项目和需求都不同。
因此,最近出现了不少不一样的语言,这些语言在浏览器中执行以前,都会被编译(转化)成 JavaScript。
现代化的工具使得编译速度很是快速且透明,实际上容许开发人员使用另外一种语言编写代码并将其自动转换为 JavaScript。
这些编程语言的例子有:
还有不少其余的语言。固然,即便咱们在使用这些语言,咱们也须要知道 JavaScript。由于学习 JavaScript 可让咱们真正明白咱们本身在作什么。
现代 JavaScript 教程:开源的现代 JavaScript 入门到进阶的优质教程。
在线免费阅读:http://zh.javascript.info/
关注微信公众号「技术漫谈」,订阅更多精彩内容。