做有态度的前端团队

网易FEG前端团队

ECMAScript 2016 Language Specification (2)

#ECMAScript 2016 Language Specification (2)

正式进入内容部分了(翻译起来有点艰难,争取加快进度)

##1.Scope
这个规范定义了ECMAScript2016 通用编程语言

##2.conformance(一致性)
ECMAScript的一致性实现必须提供支持本规范中描述的所有类型,值,对象,原型,函数和程序的语法语义。

ECMAScript的一致性实现必须能理解Unicode V8.0.0或更高标准和ISO/IEC 10646所编码的源文件。

ECMAScript的一致性实现必须提供一个适应最新版本ECMA-402定义的, 支持持编程的程序运行接口

EMCAScript的一致性实现需要提供在本声明描述之外的额外类型,值,对象,原型和函数。尤其是一致性必须实现本声明中没有描述到的原型,为这些原型实现的值,以及本声明中描述的对象。

EMCAScript的一致性实现也许支持本声明中没有描述的程序和正则表达式。特别是本一致性实现也会会对未来可能用上的“future reserved words”提供程序支持

##3.会用到的规范标准
这个部分主要是IOS标准,EMCA402接口标准,EMCA404Json标准

##4. 概览
本章节是一个对ECMAScript(后面都用Js了 打完整的太麻烦了)程序不规范的概览。
Js是一个在宿主环境中执行计算和操作计算对象的面向对象的程序语言。这里定义的Js并没有打算做成计算上自足;事实上,本声明中没有规定任何额外数据的输入或者计算结果的输出。反而是期望一个Js程序的计算环境不只是能提供对象和其他本生命中描述的工具还能确定的环境规格对象,除开表明他提供确定的可使用的原型和可以被一个Js程序调用的函数,该对象的描述和行为超过本声明的范围。

Js原来被设计成以脚本语言的方式被使用,但已经成为一个广泛使用的常规通用编程语言。脚本语言是一种用于特定系统中的用于控制,自定义,自动化现有设施的编程语言。在该系统下,有用的功能已经通过一个用户界面具有可行性,而脚本语言是一个把功能暴露给程序控制的机制。在这个方式下,脚本语言刻意可以为被专业和非专业程序员使用。

Js最开始被设计为一个网络脚本语言,为浏览器中的网页的活动提供原理,并执行作为基于网络的C/S架构的一部分执行服务器计算。Js现在被用来为大量宿主环境提供和性脚本功能。但是区别于任何具体宿主环境,核心语言是本文档特指的。

Js的用途已经不只是单纯的脚本,现再不同的环境和规模中被用来完成所有变成任务。随着Js功能的扩张,它提供的特性和工具也随之扩张。Js现在已经是一个完整的标准编程语言。

有些Js的特性和以下其他几个编程语言相似,特别是以下几个标准描述的 java c等等。后面是标准名我就不描述了。

主要是对ECMAScript做了一些总结吧。有些语句可以理解意思但是翻译不出来。比较重要的强调就是把js定义未来面向对象的程序语言,然后描述一下js的发展。从浏览器语言发展到全系语言。

###4.1网络编程

一个网络浏览器提供一个Js需要的宿主环境,包括代表窗口的对象,菜单,弹窗,对话窗,输入块,锚点,框架,历史,cookies,和输入输出。此外,宿主环境还需要提供能触及运行代码到事件上的工具,比如说改变聚焦,页面和图片的载入和未载入,错误和终止,选择器,表单提交,鼠标事件。HTML和展示页面中呈现的脚本代码时用户界面元素和计算后的文本图片的结合。脚本代码在用户有交互操作之后就可以重现,这里(运行这些)并不需要一个主程序。

一个网络服务器为服务器端的计算提供不同的宿主环境,这些计算一般包括表现请求,客户端和文件,以及锁定或者分享数据的结构。把浏览器和服务器两边的脚本运行使用在一起,是有可能为一个基于网络的应用程序提供定制化的用户界面。

涉及的包括讲解了一下网络编程的时候,c端和s端需要提供不同的环境并将其连接器起来。构成一个特别的网络编程。

###4.2ECMAScript 概览
以下是一个非正式的ECMAScript概览-----并不包含语言的所有部分。这个概览也不是标准本身的一部分。

Js是基于原型的,基础语言和环境特性都由对象构成,而一个Js程序是一系列交互对象的集群。在Js中,一个对象是零个或者更多原型,每个原型都带有属性定义么个原型可以如何被使用。比如说,当一个原型的“是否可写”属性被设置成了“否”,任何试图通过运行Js代码而指定这个属性的为另一个不同的值的行为都会被否决。原型是用来包括其他对象,原始值,函数的容器。一个原始值是一系列内建类:undefined,Null,Boolean,Number,String和Symbol;一个对象是一些内建对象的集合;一个函数式一个可调用对象。一个函数是一个一定有一个属性叫做method的对象。

这个算是个重点吧,主要详细讲述了js中几乎所有对象的分类。

Js定义了一系列内建对象,这些组成了Js本质的定义。这些内建对象包括全局对象,作为语言运行时语义的基本原理的包括Object,Function,Boolean,Symbol的对象,Error对象,代表数值计算类型的对象如Math,Number,Date,文本处理对象String and RegExp。处理一些列值的集合的对象Array和九种每个自己元素都有特别数值定义的不同类型数组。键值集合包括Map和Set对象。支持结构数据的Json对象,ArrayBuffer对象,DataView对象,支持控制抽象的对象,Prromise对象,和映射对象包括ProxyReflect

Js还定义了内建操作。Js操作包括一些列一元操作,乘法运算符,加法运算符,位变化运算符,关系运算符,二进制路基运算符,二进制位运算符,赋值运算符,和逗号运算符。

大型Js程序由模块支持,模块可以让一个程序被分解成若干个声明的多重序列。每个模块明确的标示由其他模块提供的用到的声明,这些其他模块中的声明需要能被另外的模块使用。

Js语法可以的模仿Java的语法。Js语法是自由,这让它变成非常容易使用 的脚本语言。比如说,一个变量并不需要确定类型,也不需要确定类型的原型,定义函数也不需要在调用他们之前有显示声明。

后面几个关于操作,模块,语法的部分,只是简单的讲了一下。并没有详细的介绍。介绍部分在后面更详细的分类部分。

翻译起来还是感觉不流畅,有时间的话再做调整吧 原文链接 http://www.ecma-international.org/ecma-262/7.0/index.html#sec-overview

手机阅读请扫描下方二维码:

添加新评论

ali-40.gifali-41.gifali-42.gifali-43.gifali-44.gifali-45.gifali-46.gifali-47.gifali-48.gifali-49.gifali-50.gifali-51.gifali-52.gifali-53.gifali-54.gifali-55.gifali-56.gifali-57.gifali-58.gifali-59.gifali-60.gifali-61.gif