该语言的核心

词法结构

类型,值,变量

表达式和运算符

语句

对象

数组

函数

类和模块

正则表达式

子集和扩展

服务端的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是一个属性的集合,每个属性既可以是一个命名的数据属性,也可以是一个命名的访问器属性,或者是一个内部属性

ECMAScript认识续相关推荐

  1. ECMAScript 6 Features 中文版

    ECMAScript 6 Features 中文版 来源 https://github.com/ES-CN/es6features/blob/master/README.md 如词不达意,欢迎提 PR ...

  2. JavaScript基本语法(续)

    JavaScript基本语法续 文章目录 JavaScript基本语法续 一.Javascript组成 二.字符串处理方法 1.字符串合并操作:" + " 2.parseInt() ...

  3. ECMAScript学习笔记(一)

    目录 什么是ECMAScript 基本概念 语法 关键字与保留字 变量声明,var / let / const 数据类型 操作符 语句 函数 什么是ECMAScript 虽然有时候JavaScript ...

  4. 常用的ECMAScript 6以后的新特性

    Study Notes 本博主会持续更新各种前端的技术,如果各位道友喜欢,可以关注.收藏.点赞下本博主的文章. let 与块级作用域 let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一 ...

  5. 约2万字-Vue源码解读汇总篇(续更)

    约2万字-Vue源码解读汇总篇(续更) 一.前言 1.系列汇总 未完待续... Vue源码解读:06Vue3探索篇 Vue源码解读:05生命周期篇 Vue源码解读:04模板编译篇 Vue源码解读:03 ...

  6. 自研GPU之火(续)

    自研GPU之火(续) 沐曦自研5nm GPU 近些年由于技术封锁,芯片产业发展受阻,自主研发的中国芯突破技术封锁一直是希望看到的. 华为也因此走上了自主研发的道路,从最基础的工艺做起,虽然速度不快,但 ...

  7. 计算机视觉一些项目实战技术(续)

    计算机视觉一些项目实战技术(续) PROTO-OBJECT BASED SALIENCY 在本项目中,提出一种新的方法来完成显著目标侦测的任务.与以往基于聚光灯注意理论的显著目标检测器相比,遵循基于对 ...

  8. 【第八篇】SAP ABAP7.5x新语法之F4增强【续】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之F4增强[续] 前 ...

  9. Deep Learning 学习随记(三)续 Softmax regression练习

    上一篇讲的Softmax regression,当时时间不够,没把练习做完.这几天学车有点累,又特别想动动手自己写写matlab代码 所以等到了现在,这篇文章就当做上一篇的续吧. 回顾: 上一篇最后给 ...

  10. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

最新文章

  1. 一文搞定cookie,session,token
  2. 网页内置html5游戏,爽爆HTML5网页游戏!教你怎么精选浏览器
  3. pip install win32api报错解决方法
  4. Tiktok引流到独立站?
  5. pandas作图_pandas绘图
  6. 刷爆了!程序员都在点赞的Python学习图谱安利给你!
  7. 平面设计计算机基本配置,2017平面设计使用的电脑配置
  8. ubuntu报错 E:无法定位软件包
  9. MySql5.6操作时报错:You must SET PASSWORD before execut
  10. shiro中anon配置不生效
  11. entity、bo、vo、po、dto、pojo如何理解及相互转化
  12. oracle数据库语句
  13. 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制
  14. linux who命令详解,Linux who命令实例详解
  15. 适合化工厂人员定位技术浅析,化工厂人员室内定位--新导智能
  16. Neutron DHCP-Agent问题分析定位(2)
  17. Windows API一日一练 29 SelectObject和DeleteObject函数
  18. mangle和demangle
  19. 【源码】粒子图像测速PIV简介及MATLAB工具箱PIVlab
  20. appium+android

热门文章

  1. 【lua语言从青铜到王者】第二篇:开发环境搭建+3种编辑器使用示例
  2. gprs数据传输流程
  3. 计算机的e盘 f盘找不到,求助:急!我的电脑中D盘和E盘不见了
  4. 小菜鸟szx的测试博文
  5. 捐一个亿的是加多宝,不是王老吉!只喝加多宝,不喝王老吉!
  6. 360企业版的IT管理价值
  7. 代码还是要亲自动手写才行啊
  8. 利用QVOD架设流媒体服务器/电影服务器/vod服务器
  9. Google mediapipe 人脸识别应用
  10. 计算机芯片维修论文,中职院校计算机硬件芯片检测及维修的论文