ECMAScript认识续

该语言的核心

词法结构

类型,值,变量

表达式和运算符

语句

对象

数组

函数

类和模块

正则表达式

子集和扩展

服务端的ECMAScript

(这个Javascript权威指南里面的,对比官方的文档确实是重点突出,比较通俗,但少了很多细节)


词法结构

编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序,作为语法的基础,它规定诸如变量名是什么样的,怎样写注解,以及程序语句之间如何分隔等规则。

字符集

用3.0或更高版本Unicode字符编码的一个字符序列来表示ECMAScript源文本,就是说ECMAScript是用unicode字符集来编写的,unicode允许使用多种方法对同一个字符进行编码,如字符e可以用unicode字符\u00E9,也可以用普通的ASCLL字符e的语调符\u0301

空白字符

空白字符用来改善源文本的可读性和分割 tokens(不可分割的词法单位),此外就无关紧要。空白字符可以出现的两个 token 之间还可以出现在输入的开始或结束位置。空白字符,还可以出现在字符串 字面量 (StringLiteral) 或正则 表达式字面量 (RegularExpressionLiteral)( 在这里它表示组成字面量的字符 ) 或 注释 (Comment) 中,但是不能出现的其他任何 token 内。(个人理解空格)

(果然详细还得看官方文档)

字符编码值名称正式名称
\u0009制表符
\u000B纵向制表符
\u000C进纸符
\u0020空格
\u00A0非断空格
\uFEFF位序掩码
其它分类“Zs”其它任何Unicode"空白分隔符"

行终结符

像空白字符一样,行终止字符用于改善源文本的可读性和分割 tokens(不可分割的词法单位)。然而,不像空白字符,行终结符对语法文法的行为有一定的影响。一般情况下,行终结符可以出现在任何两个 token 之间,但也有少数地方,语法文法禁止这样做。行终结符也影响自动插入分号过程,行终结符不能出现在 StringLiteral 之外的任何 token 内。行终结符只能出现在作为 LineContinuation 一部分StringLiteral token 里。(回车键)

字符编码值名称正式名称
\u000A进行符
\u000D回车符
\u2028行分隔符
\u2029段分隔符

注释

简单理解就是//,和/* */,分别为单行和多行注释

标识符和保留字

标识符就是一个名字,用来对变量和函数进行命名,必须以字母,下划线,美元后续的字符以字母,数字,下划线或美元符号

ECMAScript将一些标识符拿来用做自己的关键字,就不能用来做标识符

字面量

空值字面量

null

布尔值字面量

true,false

数值字面量

就是类似java里面的整数,浮点数

字符串字面量

一个字符串字面量是关闭的单引号或双引号里的零个或多个字符。每个字符都可以用一个转义序列代表。反斜杠,回车,行分隔符,段落分隔符,换行符之外的所有字符都可以直接出现的字符串字面量里。任何字符都可以通过转移序列的形式出现

就是字符串

自动分号插入

必须用分号终止某些 ECMAScript 语句 ( 空语句 , 变量声明语句 , 表达式语句 , do-while 语句 , continue 语句 , break 语句 , return 语句 ,throw 语句 )。这些分号总是明确的显示在源文本里。然而,为了方便起见,某些情况下这些分号可以在源文本里省略。描述这种情况会说:这种情况下给源代码的 token 流自动插入分号。

分号插入有三个基本规则:

  1. 左到右解析程序,当遇到一个不符合任何文法产生式的 token(叫做 违规 token(offending token)),那么只要满足下面条件之一就在违规 token 前面自动插入分号。
    • 至少一个 LineTerminator 分割了违规 token 和前一个 token。
    • 违规 token 是 }。
  2. 左到右解析程序,tokens 输入流已经结束,当解析器无法将输入 token 流解析成单个完整 ECMAScript 程序 ,那么就在输入流的结束位置自动插入分号。
  3. 左到右解析程序,遇到一个某些文法产生式允许的 token,但是此产生式是受限产生式,受限产生式的里紧跟在 no LineTerminator here 后的第一个终结符或非终结符的 token 叫做受限的 token,当至少一个 LineTerminator 分割了受限的 token 和前一个 token,那么就在受限 token 前面自动插入分号。

。。。。还是老老实实的加吧,权威指南里面也有类似的解释,管它会不会自动加上保险

区分大小写

区分大小写语言,也就是说,关键字,变量,函数名和所有标识符都必须采取一致大小写形式

(html不区分大小写)

类型

类型又分为ECMAScript语言类型与规范类型

ECMAScript语言类型是ECMAScript程序员使用ECMAScript语言直接操作对应类型,ECMAScript语言类型包括未定义(undefined),空值(null),布尔值(boolean),字符串(String),数值(number),对象(Object)

规范类型是描述ECMAScript语言构造与ECMAScript语言类型语意的算法所用的元值对应的类型.规范类型包含引用,列表,完结,属性描述式,属性标示,词法环境,环境记录。规范类型的值是不一定对应ECMAScript实现里任何实体的虚拟对象,规范类型可用来描述ECMAScript表达式运算的中途结果,但是这些值不能存成对象的变量或是ECMAScript语言变量的值

Undefined类型

undefined类型有且只有一个值称为undefined.任何没有被赋值的变量都有undefined值

Null类型

null类型有且只有一个值,称为null

Boolean类型

Boolean类型表示逻辑实体,有两个值,称为true和false

String类型

字符串类型是所有有限的零个或多个16位无符号整数值的有序序列,在运行的ECMAScript程序中,字符串类型被用于表示文本数据,此时字符串中的每个元素都被市委一个代码点

Number类型

精确地,数值类型拥有18437736874454810627个值,表示为IEEE-754 格式 64 位双精度数值,在 ECMAScript 中,它们被表示为一个单独的特殊值:NaN(非数字),还有另外两个特殊值称为正无穷和负无穷(+Infinity(简作Infinity) 和 -Infinity 产生)

Object类型

Object是一个属性的集合,每个属性既可以是一个命名的数据属性,也可以是一个命名的访问器属性,或者是一个内部属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值