什么是JavaScript
1995年问世。
最后在客户端解决某些根本的验证。
名字:Mocha -> LiveScript -> JavaScript
ECMAScript脚本语言规范:ECMA-262(TC39,第39技术委员会)
残缺的的JavaScript蕴含:
- 外围ECMAScript
- 文档对象模型DOM
- 浏览器对象模型BOM
宿主环境提供ECMAScript的基准实现和与环境本身交互必须的扩大。
ECMA-262定义了什么:
语法 | 类型 | 语句 | 关键字 | 保留字 | 操作符 | 全局对象
版本更迭
第1版:实质上与JavaScript1.1雷同,反对Unicode规范,对象与平台无关
第2版:一些编校
第3版(!!):更新了字符串解决、谬误定义和数值输入。另外还减少了对正则表达式、新的管制语句、try/catch异样解决的反对,等
第4版(×):强类型变量、新语句和数据结构、真正的类和经典的继承,以及操作数据的新伎俩
第5版(3.1!!!):厘清第3版的歧义,减少对JSON的反对、不便继承和高级属性定义的办法、减少严格模式
第6版(2015.6!!!!):反对类、模块、迭代器、生成器、箭头函数、期约(Promise)、反射、代理和泛滥新的数据类型(Map、Set等)
第7版(2016.6):大量语法层面的加强,如Array.prototype.includes和指数操作符
第8版(2017.6):减少了异步函数(async/await)、SharedArrayBuffer及Atomics API,以及Object.values()/Object.entries()/Object.getOwnPropertyDescriptors()和字符串填充办法(?),明确反对对象字面量最初的逗号。
第9版(2018.6):异步迭代、残余和扩大属性、一组新的正则表达式个性、Promise finally(),以及模板字面量订正
第10版(2019.6):减少了Array.prototype.flat()/flatMap()、String.prototype.trimStart()/trimEnd()、Object.fromEntries()办法,以及Symbol.prototype.description属性,明确定义了Function.prototype.toString()的返回值并固定了Array.prototype.sort()的程序。解决了与JSON字符串兼容的问题,并定义了catch子句的可选绑定(?)
ECMAScript合乎性:
必须满足的条件
- 反对ECMA-262中形容的所有“类型、值、对象、属性、函数,以及程序语法与语义”;
- 反对Unicode字符
浏览器反对
浏览器 | DOM Level | ECMAScript合乎性 |
---|---|---|
IE5.5~8 | DOM Level1 | ES3 |
IE9 | ES5(局部) | |
IE10-11 | ES5 | |
Edge12+ | ES6 | |
Safari6~8 | ES5 | |
Safari9+ | ES6 | |
Chrome49+ | ES6 | |
FireFox45+ | ES6 | |
iOS Safari 9.2+ | ES6 |
DOM
一个利用编程接口(API),用于在HTML中应用扩大的XML。DOM将整个页面形象为一组分层节点。
动静HTML:不刷新页面而批改页面外观和内容。
DOM级别
DOM Level1(1998):DOM Core和DOM HTML两个模块。指标:映射文档构造
DOM Core:提供一种映射XML文档,从而不便拜访和操作文档任意局部的形式;DOM HTML扩大了Core并减少了特定于HTML的对象和办法。
DOM Level2:减少了对鼠标和用户界面事件、范畴、遍历的反对,通过对象接口反对了CSS。DOM Core也被扩大以蕴含对XML命名空间的反对。
新增模块:
- DOM视图:形容追踪文档不同视图的接口。(如利用CSS款式前后的文档)
- DOM事件:形容事件及事件处理的接口
- DOM款式:形容解决元素CSS款式的接口
- DOM遍历和范畴:形容遍历和操作DOM树的接口
- DOM Level3:进一步扩大了DOM,减少了以对立的形式加载和保存文档的办法(DOM Load and Save的新模块中),还有验证文档的办法(DOM Validation)。DOM Core扩大以反对所有XML1.0的个性,包含XML Infoset、XPath和XML Base。
- DOM4(DOM Living Standard):新增的内容包含代替Mutation Events的Mutation Observers。
L1+L2(局部)+L3(局部):Opera 9 | Safari2+ | iOS Safari 3.2+ | Chrome 1+ | FF 1+
其余DOM
基于XML的,减少了本人独有的DOM办法和接口:
- SVG(可伸缩矢量图,Scalable Vector Graphics)
- MathML(数学标记语言,Mathematics Markup Language)
- SMIL(同步多媒体集成语言,Synchronized Multimedia Integration Language)
BOM
能够操控浏览器显式页面之外的局部。
惟一一个没有相干规范的JavaScript实现。<——HTML5
次要针对浏览器窗口和子窗口,通常包含特定于浏览器的扩大:
- 弹出新浏览器窗口的能力(window.open)
- 挪动、缩放和敞开浏览器窗口的能力
- navigator对象,提供对于浏览器的详尽信息
- location对象,提供浏览器加载页面的详尽信息
- screen对象,提供对于用户屏幕分辨率的详尽信息
- performance对象,提供浏览器内存占用、导航行为和工夫统计的详尽信息
- 对cookie的反对
- 其余自定义对象,如XMLHttpRequest和IE的ActiveXObject
少数浏览器对JavaScript的反对,指的是实现ECMAScript和DOM的水平。