JavaScript简介
脚本语言
除了浏览器和服务端执行,可以在任意搭载JavaScript引擎(或称为JavaScript虚拟机)的设备中运行。
JavaScript引擎
- V8:Chrome、Opera 和 Edge 中的 JavaScript 引擎。
- SpiderMonkey:Firefox 中的 JavaScript 引擎。
引擎工作基本原理
- 引擎(如果是浏览器,则引擎被嵌入在其中)读取(“解析”)脚本。
- 然后,引擎将脚本转化(“编译”)为机器语言。
- 最后,机器代码快速地执行。
引擎会对流程中的每个阶段都进行优化,
以及在编译的脚本运行时监视和分析
同源策略
不同的标签页/窗口之间通常互不了解,如果两个标签页打开的不是同一个网站(域名、协议或者端口任一不相同的网站),它们都不能相互通信。即使是同源页面,也需要两个标签页必须 都 包含一些处理这个问题的特定的 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:一份列有语言功能以及引擎是否支持这些功能的表格。