在本规范的算法里,操做数都有一个对应的类型,全部的类型都在本章中定义。类型能够进一步地分为ECMA语言类型和规范类型。 算法
ECMA语言类型是在咱们使用ECMAScript语言编程的时候使用的。ECMA语言类型有Undefined,Null,String,Boolean,Number和Object(译者注:其中Undefined,Null,String,Boolean,Number为基元类型,Object为对象,对象由基元类型构成。) 编程
ECMA规范类型是做为元值用来辅助描述ECMAScript的语法构造和语言类型的。ECMA规范类型有Reference,List,Completion,Property Descriptor,Property Identifier,Lexcical Environment和Environment Record。在ECMAScript的实现里,规范类型的值不须要对应任何具体的实体。规范类型的值可用于表示表达式运算结果的中间值,但这些值不能做为对象的属性或者变量的值存储。 数组
在本规范里,咱们用“Type(x)”来表示x的类型,这里的类型就是上面说的ECMA语言类型和规范类型。 函数
Undefined类型只有惟一的一个值undefined。任何没有被赋值的变量都拥有值undefined。 spa
Null类型拥有惟一值null。 翻译
Boolean类型对应一个拥有两个值的逻辑实体,这两个值为true和false。 对象
String类型是由有限的0个或多个16位无符号整数组成的有序序列。在ECMAScript中通常用来表明文本数据,String中的每个无符号整数都被当作一个代码单元(见第六章)。每一个无符号整数占据字符串中的一个位置,用非负整数索引这些位置。第一个元素占据第0位,第二个整数占据第1位,以此类推。字符串的长度(length)就是这些无符号整数的个数。空字符串的长度(length)为0,所以不包含任何的元素。 索引
当一个字符串包含文本数据,其中每个元素都被认为是独立的UTF-16单元。不管这是否是字符串的实际存储格式,它们都被认为是用UTF-16单元表示。除非特别声明,全部对字符串的操做均被看成为对16位无符号整数序列的操做。这些操做不保证结果字符串符合标准化的形式,也不保证语言的敏感性。 ip
Number类型不详细翻译,看着就头大。简单说一下吧,它是用符合IEEE754标准的64位浮点数表示的。 ci
对象是属性的集合。属性能够分为数据属性,访问器属性和内部属性三种。
数据属性由名字和对应的ECMA语言类型值,和属性特性(一些布尔类型值的集合)组成。
访问器属性由名字和一个或两个访问器函数,和属性特性(一些布尔类型值的集合)组成。这两个访问器函数是用来做为提取和存储该属性值得函数。
内部属性没有名字,且不能经过ECMAScript语言直接访问。内部属性的存在纯粹是由于规范的须要。