JavaScript简介

脚本语言

除了浏览器和服务端执行,可以在任意搭载JavaScript引擎(或称为JavaScript虚拟机)的设备中运行。

JavaScript引擎

  • V8:Chrome、Opera 和 Edge 中的 JavaScript 引擎。
  • SpiderMonkey:Firefox 中的 JavaScript 引擎。

引擎工作基本原理

  1. 引擎(如果是浏览器,则引擎被嵌入在其中)读取(“解析”)脚本。
  2. 然后,引擎将脚本转化(“编译”)为机器语言。
  3. 最后,机器代码快速地执行。

引擎会对流程中的每个阶段都进行优化,

以及在编译的脚本运行时监视和分析

同源策略

不同的标签页/窗口之间通常互不了解,如果两个标签页打开的不是同一个网站(域名、协议或者端口任一不相同的网站),它们都不能相互通信。即使是同源页面,也需要两个标签页必须 都 包含一些处理这个问题的特定的 JavaScript 代码,并均允许数据交换。

仅存在于浏览器中,

比如服务器上就不存在此类限制

JavaScript“上层”语言

JS语言的超集

  • CoffeeScript:一种语法糖,语法更加简介。
  • TypeScript:添加编译时态的严格数据类型校验,更好地支持复杂系统的开发。
  • Flow:同样添加数据类型校验,但与TS方式不同。
  • Dart:独立的语言。拥有自己的引擎,该引擎可以在非浏览器环境中运行(例如手机应用),也可以被编译成 JavaScript。
  • Brython:Python 到 JavaScript 的转译器。(感觉鸡肋,前端不懂Python,后端不懂html和css)
  • Kotlin:现代编程语言,可以在浏览器和 Node 环境中运行。

ECMA-262 规范

JavaScript最权威的信息来源 新版本规范

但它并不适合日常使用

最新最前沿的功能 提案

包括“即将纳入规范的”(所谓的 “stage 3”)

查询手册

MDN JavaScript 索引:获取关于个别语言函数、方法等深入信息的很好的信息来源。

浏览器兼容表

  • Can I Use:每个功能的支持表,查询某个功能在特定浏览器的支持情况。
  • Compat Table:一份列有语言功能以及引擎是否支持这些功能的表格。