什么是 ECMAScript,它与 JavaScript 有何不同

什么是 ECMAScript?

关于 JavaScript](https://cloudaffle.com/history-of-javascript/)的[历史以及它是如何产生的,有一个完整的故事。长话短说,ECMAScript 中的 ECMA 是指欧洲计算机制造商协会,早在 1997 年就向该协会提交了 JavaScript 1.1 进行标准化。创建了一个技术委员会,旨在标准化通用的语法和语义,跨平台和供应商中立的脚本语言。该委员会由来自 Sun Microsystems、Netscape Communication、Microsft 和其他各种公司的开发人员组成。他们提出了 ECMA-262,这是一个标准,定义了一种新的脚本语言和一种称为 ECMAScript 的通用脚本语言,所有浏览器都必须遵守该标准才能创建自己的 JavaScript 实现。

ECMAScript 未绑定到 Web 浏览器

ECMAScript 是一种跨平台、通用的脚本语言,并不仅仅与 Web 浏览器相关联。 ECMA-262 定义了可以构建更强大的脚本语言的标准。 ECMA-262 定义了语言的以下部分,根本不涉及 Web 浏览器

  • 语法

  • 报表

  • 个关键词

  • 保留字

  • 运营商

  • 个全局对象

JavaScript 只是将 ECMAScript 实现为一种更成熟、更健壮的脚本语言,具有各种输入和输出方法,开发人员可以反过来使用这些方法来构建各种应用程序。

ECMAScript 一致性

那么 ECMAScript 一致性意味着什么?根据 ECMA-262 中规定的标准,何时会认为编程语言符合 ECMAScript?您可以看到最新的ECMAScript 规范但实现的一致性归结为以下几点:

  • 实现应支持标准中提到并在上面突出显示的语言的所有部分。

  • 支持Unicode字符标准

  • 符合规范的实现可能会添加规范文档中未指定的其他类型、对象、函数等。

  • 扩展内置正则表达式支持。

GitHub 上有一个测试套件适用于 ECMA-262,用于测试是否符合标准。

JavaScript 引擎

JavaScript 引擎可以称为程序或解释器,它读取您的 JavaScript 代码并将其转换为机器可理解的代码。每个网络浏览器都在不同的引擎上运行,其中最常见的是谷歌的 V8 引擎,它是开源的,也是由 NodeJs 实现的。以下是各种浏览器及其使用的 JavaScript 引擎的一些常见示例:

[

不同的浏览器使用不同的JavaScript引擎

](https://res.cloudinary.com/practicaldev/image/fetch/s--Q2ibHIAV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// cloudaffle.com/assets/images/posts/browser-engine.jpg)

  • 谷歌浏览器 - V8 引擎

  • 火狐 - 蜘蛛猴

  • Microsoft Edge - Chakra,现在也使用 V8 引擎

  • Safari - Nitro,也称为 JavaScriptCore

它是作为解释器工作的 JavaScript 引擎,夹在机器代码和 JavaScript 运行时(也称为 JavaScript 主机)之间。既然现在我们了解了什么是 JavaScript 引擎的工作,让我们更深入地研究并尝试掌握什么是 JavaScript 运行时。

JavaScript 运行时或 JavaScript 主机

JavaScript 运行时(或 JavaScript 主机)可以理解为使用 JavaScript 引擎生成 API 的容器,软件开发人员可以使用这些 API 创建使用 JavaScript 的应用程序。以浏览器中的 JavaScript 运行时为例,它通常包含更特定于浏览器的 JavsScript 实现。而像 NodeJs 这样的运行时将具有特定的实现,这些实现更具体地用于使用 JavaScript 运行和构建服务器端应用程序。

JavaScript 运行时 - NodeJS 和 Google Chrome 如何在同一 V8 引擎上运行的秘诀

由于我们现在知道什么是 JavaScript 引擎和 JavaScript 宿主环境(JavaScript 运行时),因此我们可以更好地了解 NodeJs 和 Google Chrome 如何在同一个 V8 引擎上运行,但执行非常不同的功能。秘诀在于它们确实拥有相同的 JavaScript 引擎,但 JavaScript 运行时却截然不同。让我们比较两个 JavaScript 运行时环境

[

浏览器引擎和浏览器运行时说明

](https://res.cloudinary.com/practicaldev/image/fetch/s--YqU_fE2M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// cloudaffle.com/assets/images/posts/javascript-runtime-vs-engine.jpg)

简而言之,浏览器的运行时可能具有以下对创建 Web 应用程序有用的基本实现:

  • The Core - JavaScript 的基本实现,具有开发人员可以使用的所有输入和输出功能。

  • 文档对象模型 (DOM) - 这是浏览器呈现为节点层次结构的内容,以向客户端或用户显示 XML 和 HTML。

  • 浏览器对象模型 (BOM) - 这允许开发人员操作浏览器窗口。使用 BOM,开发人员可以访问浏览器功能并在 DOM 上下文或正在呈现的页面之外操作它们。

另一方面,NodeJs 运行时将具有对开发服务器端应用程序有用的实现。它包含以下实现作为示例:

  • 需要

  • 缓冲区

  • 进程

ES6、ES2015 或 ES Harmony。他们的意思是什么?

这是 ECMA-262 的第六版,于 2015 年发布,被称为 ES6、ES2015 和 ES Harmony。基本上所有这些术语都指的是同一版本的 ECMA-262。因此,ECMA 每年都会发布新版本的规范,因此第 7 版于 2016 年发布,依此类推。

这是 ECMA-262 的第六版,它为 ECMAScript 带来了最理想和最重要的增强集合,因此 ES6 被认为是一个里程碑,并改变了我们使用 JavaScript 的方式。这就是为什么 ES6 被认为是一个重大的变化和一种新的 JavaScript 编写方式。它为类、模块、迭代器、生成器、箭头函数、承诺、反射和许多新数据类型带来了正式支持。

那么浏览器是否支持最新标准?

答案是不! ES6 的采用水平在所有浏览器中都不一致。例如,Internet Explorer 11 仅符合 ES5 标准,而不符合 ES6,因此在支持不同版本的 ECMAScript 标准的不同浏览器之间带来了很多不兼容和混乱。使用 JavaScript 提供的最新功能编写应用程序有一种非常优雅的方式,并且仍然符合旧版浏览器。但在以后的文章中会对此进行更多介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490156.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习(二)

线性模型: 离散转为连续的变换: 检查是否有“序”的变化,若有“序”,则连续化;否则,转化为k维向量 最小二乘解: 多元线性回归: 广义线性模型: 线性判别分析: 由于将样例投影到一条直线(低维空间),因此也被视为一种&q…

洛谷1803

P1803 凌乱的yyy / 线段覆盖 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 所需知识:贪心 本来还想用dfs bfs搜索来一点一点做的,看到了大佬的思路之后,直接orz了 整体思路:因为要想尽可能的多参加比赛,所以越早结…

MySQL 经典练习 50 题 (记录)

前言: 记录一下sql学习,仅供参考基本都对了,不排除有些我做的太快做错了。里面sql不存在任何sql优化操作,只以完成最后输出结果为目的,包含我做题过程和思路最后一行才是结果。 1.过程: 1.1.插入数据 /* SQLyog Ul…

《论文阅读》TSAM:一个因果情绪蕴含的双流注意模型 COLING 2022

《论文阅读》TSAM:一个因果情绪蕴含的双流注意模型 前言简介方法整体流程图上下文语句表示Two-Stream Attention Model(TSAM)原因预测实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《TSAM:…

Python 指南-最短路径(Dijkstra 算法):

Dijkstra 算法可在 Python 库 OSMNX 中实现,可用于查找两个位置之间按距离或时间加权的最短路径。该算法使用 OpenStreetMap (OSM) 网络来驾驶、步行或骑自行车,并在后台使用 Python 库 NETWORKX 查找路线。 编码练习 正如我提到的,我将做一…

MySQL 8.0.35 企业版开启审计audit log功能

一、系统环境和要求 在MySQL中,开启日志审计可以记录数据库的操作日志,包括修改、删除、插入等操作。这对于追踪和分析数据库的使用情况以及排查潜在的安全问题非常有帮助。本文将详细介绍如何开启MySQL的日志审计功能。 操作系统:Ubuntu 20…

距离AI PC起飞,还差了点什么?

作者 | 张未 来源 | 洞见新研社 PC行业也没有逃过万物皆可AI的真香定律。 英伟达在前喊出AI PC的口号后,一众PC厂商纷纷加码这一最新概念,有关AI PC的讨论点燃了PC市场。 最直观的变化就是,全球PC市场终于止住了颓势,打破了七连…

JavaWeb开发-前端CSS基础

CSS层叠样式表基本语法 层叠样式表,用来控制页面的样式 (1)CSS的三种引入方式 内部样式表:适合学习使用,将CSS代码写在style标签里面,style标签嵌套在title里 外部样式表:开发常使用,将CSS代…

Windows Server配置MySQL主从数据库

目录 一,环境准备 1.1.安装MySQL 1.2.主数据库配置 1.3.从数据库的配置 二,主从同步配置 2.1.主库设置 2.2.查看二进制日志的状态 2.3.从数据库配置 2.4.配置完成测试 一,环境准备 1.1.安装MySQL 我用虚拟机安装两台 Windows Serv…

Requests教程-19-token认证

领取资料,咨询答疑,请➕wei: June__Go 上一小节中我们学习了requests的auth认证方法,本小节我们学习一下requests的token认证。 token的来源: 当客户端多次向服务端请求数据时,服务端就需要多次从数据库中查询用户…

SpringBoot扩展篇:循环依赖源码链路

SpringBoot扩展篇:循环依赖源码链路 1. 相关文章2. 一个简单的Demo3. 流程图3.1 BeanDefinition的注册3.2 开始创建Bean3.3 从三级缓存获取Bean3.4 创建Bean3.5 实例化Bean3.6 添加三级缓存3.7 属性初始化3.8 B的创建过程3.9 最终流程 1. 相关文章 SpringBoot 源码…

何恺明重提十年之争——模型表现好是源于能力提升还是捕获数据集偏置?

想象一下,如果把世界上所有的图片都找来,给它们放到一块巨大的空地上,其中内容相似的图片放得近一些,内容不相似的图片放得远一些(类比向量嵌入)。然后,我随机地向这片空地撒一把豆子&#xff0…

【计算机图形学】AO-Grasp: Articulated Object Grasp Generation

对AO-Grasp: Articulated Object Grasp Generation的简单理解 文章目录 1. 做的事情2. AO-Grasp数据集2.1 抓取参数化和label标准2.2 语义和几何感知的抓取采样 3. AO-Grasp抓取预测3.1 预测抓取点3.2 抓取方向预测 4. 总结 1. 做的事情 引入AO-Grasp,grasp propo…

【MySQL】聊聊自增id用完怎么办?

在实际的开发中,一般都会将数据存储到数据库中,在设计表的时候,其实id如果达到最大值的话,会出现什么问题。其实主要分两种情况,一种是设置了主键id,另一种没有设置主键id。 表定义自增值id create table…

如何利用FLUENT计算流体力学方法解决大气与环境领域流动问题

ANSYS FLUENT是目前全球领先的商用CFD 软件,市场占有率达70%左右,是工程师和研究者不可多得的有力工具。由于采用了多种求解方法和多重网格加速收敛技术,因而FLUENT能达到最佳的收敛速度和求解精度。灵活的非结构化网格和基于解的自适应网格技…

SOC子模块---RTC and watchdog

RTC RTC大致执行过程: 对SOC 中的锁相环或者外部晶振的时钟进行计数;产生时,分,秒的中断;送给中断控制器;中断控制器进行优先权选择后送给cpu;Cpu执行中断服务程序;在中断服务程序…

OpenGL学习笔记【4】——创建窗口,给窗口添加渲染颜色

一、前三章节的前情回顾 章节一:上下文(Context) OpenGL学习笔记【1】——简介-CSDN博客 章节一讲述了OpenGL在渲染的时候需要一个Context来记录了OpenGL渲染需要的所有信息和状态,可以把上下文理解成一个大的结构体,它里面记录了当前绘制使…

JavaSE系统性总结全集(精华版)

目录 1. 面向对象(封装,继承,多态)详解 1.1 面向过程和面向对象的区别 1.2面向对象的三大特性 1.2.1 封装 1.2.2 继承 1.2.3 多态 1.2.4 方法重写和方法重载的区别(面试题) 1.2.5 访问权限修饰符分…

动听的洗牌游戏(Java篇ArrayList实操)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

【数仓】DataX软件安装及配置,从mysql同步到hdfs

相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用(集群配置)【数仓】Hadoop集群配置常用参数说明【数仓】zookeeper软件安装及集群配置【数仓】kafka软件安装及集群配置【数仓】flume软件安…