浏览器内核和浏览器引擎的关系?
浏览器内核主要包括两大块功能,它们分别是:
浏览器引擎。浏览器引擎负责处理 HTML 和 CSS,遵照的是 W3C 标准。
JavaScript 引擎。JS 引擎负责处理 JS,遵照的是 ECMAScript 标准。
它们两者互相独立但又有非常紧密的结合,而且在不同浏览器内核中的实现也是不太一样的。但随着微软的 Edge 宣布将内核切换成 Chromium,目前这个战场主要就剩下苹果和 Google 两个玩家,它们的浏览器引擎分别是 Webkit 和 Blink(其实 Blink 也是 fork 自 Webkit),JS 引擎分别是JavaScriptCore和V8。
浏览器引擎都用的哪些?
- Safari
WebKit引擎 - Chrome
WebKit分支Blink - Edge
早期是Trident引擎,最新转用Blink. - Opera
早期用Presto引擎,2013年转用Blink. - Firefox
用Gecko引擎。 - QQ/搜狗浏览器
Trident/Webkit双引擎。
浏览器引擎的作用?
浏览器最大的作用是访问网络,在用户输入一段网址后,例如www.baidu.com, 浏览器APP负责从服务器获取网页HTML数据(可能包含CSS/JS), 浏览器引擎负责将HTML数据(文本数据)解析渲染成可视化页面,展示给用户。例如JS引擎Google V8, 用C++编写。
JS版本发展史?
JavaScript(简称JS)最早是网景公司(Netscape)开发的一种脚本语言,可用于浏览器脚本。自1995年诞生以来,它经历了多个版本的更新和发展。以下是一些主要的JavaScript版本和功能支持情况:
- ECMAScript 1(1997年6月):第一个官方的JavaScript版本,由欧洲计算机制造商协会(ECMA)标准化。
- ECMAScript 2(1998年6月):对第一个版本进行了小幅度的更新。
- ECMAScript 3(1999年12月):添加了正则表达式、格式化输出、异常处理等新特性。
- ECMAScript 4:这个版本被放弃了,没有正式发布。它原本计划包含很多新特性,但由于争议较大,最终未能达成一致。
- ECMAScript 5(2009年12月):引入了JSON对象、严格模式(‘use strict’)、以及一些新的数组方法和对象属性。
- ECMAScript 5.1(2011年6月):这个版本被ISO/IEC国际标准组织采纳,成为了ISO/IEC 16262:2011标准。
- ECMAScript 6(也称为ECMAScript 2015,2015年6月):这是一个重大更新,引入了类、模块、箭头函数、模板字符串、let和const声明、Promise、解构赋值等众多新特性。
- ECMAScript 2016(2016年6月):添加了一些小的特性,如数组包含(Array.prototype.includes)和指数运算符(**)。
- ECMAScript 2017(2017年6月):引入了异步函数(async/await)、共享内存和原子操作等特性。
- ECMAScript 2018(2018年6月):增加了异步迭代、Promise.finally()、Rest/Spread属性等特性。
- ECMAScript 2019(2019年6月):新增了Array.prototype.flat()、Array.prototype.flatMap()、String.prototype.trimStart()、String.prototype.trimEnd()等特性。
- ECMAScript 2020(2020年6月):引入了可选链(?.)、空值合并运算符(??)、国际化增强、Promise.allSettled()等特性。
- ECMAScript 2021(2021年6月):增加了逻辑赋值运算符、String.prototype.replaceAll()、Promise.any()等特性。
- ECMAScript 2022(2022年6月):引入了类字段、顶层await、 RegExp Match Indices等特性。
从2015年开始,ECMAScript的命名改为按年份命名。
若文章对您有帮助,欢迎关注。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。