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 流自动插入分号。
分号插入有三个基本规则:
- 左到右解析程序,当遇到一个不符合任何文法产生式的 token(叫做 违规 token(offending token)),那么只要满足下面条件之一就在违规 token 前面自动插入分号。
- 至少一个 LineTerminator 分割了违规 token 和前一个 token。
- 违规 token 是 }。
- 左到右解析程序,tokens 输入流已经结束,当解析器无法将输入 token 流解析成单个完整 ECMAScript 程序 ,那么就在输入流的结束位置自动插入分号。
- 左到右解析程序,遇到一个某些文法产生式允许的 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是一个属性的集合,每个属性既可以是一个命名的数据属性,也可以是一个命名的访问器属性,或者是一个内部属性
ECMAScript认识续相关推荐
- ECMAScript 6 Features 中文版
ECMAScript 6 Features 中文版 来源 https://github.com/ES-CN/es6features/blob/master/README.md 如词不达意,欢迎提 PR ...
- JavaScript基本语法(续)
JavaScript基本语法续 文章目录 JavaScript基本语法续 一.Javascript组成 二.字符串处理方法 1.字符串合并操作:" + " 2.parseInt() ...
- ECMAScript学习笔记(一)
目录 什么是ECMAScript 基本概念 语法 关键字与保留字 变量声明,var / let / const 数据类型 操作符 语句 函数 什么是ECMAScript 虽然有时候JavaScript ...
- 常用的ECMAScript 6以后的新特性
Study Notes 本博主会持续更新各种前端的技术,如果各位道友喜欢,可以关注.收藏.点赞下本博主的文章. let 与块级作用域 let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一 ...
- 约2万字-Vue源码解读汇总篇(续更)
约2万字-Vue源码解读汇总篇(续更) 一.前言 1.系列汇总 未完待续... Vue源码解读:06Vue3探索篇 Vue源码解读:05生命周期篇 Vue源码解读:04模板编译篇 Vue源码解读:03 ...
- 自研GPU之火(续)
自研GPU之火(续) 沐曦自研5nm GPU 近些年由于技术封锁,芯片产业发展受阻,自主研发的中国芯突破技术封锁一直是希望看到的. 华为也因此走上了自主研发的道路,从最基础的工艺做起,虽然速度不快,但 ...
- 计算机视觉一些项目实战技术(续)
计算机视觉一些项目实战技术(续) PROTO-OBJECT BASED SALIENCY 在本项目中,提出一种新的方法来完成显著目标侦测的任务.与以往基于聚光灯注意理论的显著目标检测器相比,遵循基于对 ...
- 【第八篇】SAP ABAP7.5x新语法之F4增强【续】
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之F4增强[续] 前 ...
- Deep Learning 学习随记(三)续 Softmax regression练习
上一篇讲的Softmax regression,当时时间不够,没把练习做完.这几天学车有点累,又特别想动动手自己写写matlab代码 所以等到了现在,这篇文章就当做上一篇的续吧. 回顾: 上一篇最后给 ...
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
最新文章
- 一文搞定cookie,session,token
- 网页内置html5游戏,爽爆HTML5网页游戏!教你怎么精选浏览器
- pip install win32api报错解决方法
- Tiktok引流到独立站?
- pandas作图_pandas绘图
- 刷爆了!程序员都在点赞的Python学习图谱安利给你!
- 平面设计计算机基本配置,2017平面设计使用的电脑配置
- ubuntu报错 E:无法定位软件包
- MySql5.6操作时报错:You must SET PASSWORD before execut
- shiro中anon配置不生效
- entity、bo、vo、po、dto、pojo如何理解及相互转化
- oracle数据库语句
- 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制
- linux who命令详解,Linux who命令实例详解
- 适合化工厂人员定位技术浅析,化工厂人员室内定位--新导智能
- Neutron DHCP-Agent问题分析定位(2)
- Windows API一日一练 29 SelectObject和DeleteObject函数
- mangle和demangle
- 【源码】粒子图像测速PIV简介及MATLAB工具箱PIVlab
- appium+android