《JavaScript权威指南 第六版 中文版》(一)
《JavaScript权威指南 第六版 中文版》
第二章 词法结构
2.1字符集
JavaScript是使用Unicode字符集编码写的。
2.1.1区分大小写
JavaScript是区分大小写的语言。也就是说,关键字、变量、函数名和所有的标识符都需要采用一致的大小写形式。
许多客户端JavaScript对象和属性与它们所表示的HTML标签和属性同名。在HTML中这些标签和属性名可以使用大写,而在JavaScript中则必须使用小写
2.1.2空格、换行符和格式控制符
JavaScript会忽略程序中标志(token)之间的空格。多数情况下,JavaScript会忽略换行符(2.5节 提到一种以外情形),由于可以在代码中随意使用空格和换行,因此可以使用整齐一致的缩进来形成统一一致的编码风格,从而提高代码的可读性。
除了能够识别普通的空格符(\u0020),JavaScript还可以识别如下这些表示空格的字符:水平制表符(\u0009)、垂直制表符(\u000B)、换页符(\u000C)、不中断空格符(\u00A0)、字节序标记(\uFEFF),以及在Unicode中所有的Zs类别的字符
JavaScript将如下字符识别为行结束符,换行符(\u000A)、回车符(\u000D)、行分隔符(\u2028)、段分隔符(\u2029)。回车符加换行符在一起被解释为一个单行结束符。
Unicode格式控制字符 ,比如“从右至左书写标记”(\u2ooF)和“从左至右书写标记,(\u200E),控制着文本的视觉显示,这对于一些非英语文本的正确显示来说是至关重要的,这些字符可以用在JavaScript的注释、字符串直接量和正则表达式直接量中,但不能用在标识符(比如,变量名)中。但有个例外,零宽连接符(\u200D)和零宽非连接符(\uFEFF) 是可以出现在标识符中的,但不能作为标识符的首字符。上文也提到了,字节序标记格式控制符(\uFEFF)被当成了空格来对待。
2.1.3Unicode转义序列
使用6位ASCII字符代表任意16位Unicode内码,这些Unicode转义序列均以\u为前缀,后面跟4个16进制数。这种Unicode转义写法可以在JavaScript字符串直接量、正则表达式直接量和标识符中使用。
Unicode转义写法也可以出现在注释中,但由于Javascript会将注释忽略,它们只是被当
成上下文中的ASCll字符处理,而且并不会被解析为其对应的Unicode字符.
2.1.4标准化
Unicode标准为所有字符定义了一个首选的编码格式,并给出了一个标准化的处理方式将文本转换为一种适合比较的标准格式,Javasoript会认为它正在解析的程序代码已经是这种标准格式,不会再对其标识符、字符串或正则表达式作标准化处理。
2.2注释
JavaScript支持两种格式的注释。在行尾“//”之后的文本都会被JavascriPt当做注释忽略掉的。此外,"/”和“/”之间的文本也会当做注释,这种注释可以跨行书写,但不能有嵌套的注释。
2.3直接量
所谓直接量(literal),就是程序中直接使用的数据量。
2.4标识符和保留字
标识符就是一个名字。在JavaScript中,标识符用来对变量和函数进行命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。JavaScript标识符必须以字母、下划线(_)或美元符($)开始。后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便JavaScript可以轻易区分开标识符和数字)。
出于可移植性和易于书写的考虑,通常我们只使用ASCII字母和数字来书写标识符。然而需要注意的是,JavaScript允许标识符中出现Unicode字符全集中的字母和数字。
保留字
关键字
class const enum export extends super
2.5可选的分号
在JavaScript中,如果语句各自独占一行,通常可以省略语句之间的分号(程序结尾或花括号"}"之前的分号也可以省略),一般使用分号(;)来明确标记语句的结束,即使并不完全需要分号的时候也是如此。
注意几个细节
如果按照如下方式等号可以省略:
a=3;
b=4;如果按照如下方式等号不能省略:
a=3;b=4;
需要注意的是,JavaScript并不是在所有换行处都填补分号:只有在缺少了分号就无法正确解析代码的时候,JavaScript才会填补分号。换句话讲(类似下面代码中的两处异常),如果当前语句和随后的非空格字符不能当成一个整体来解析的话,JavaScript就在当前语句行结束出填补分号。
看如下代码:
var a
a
=
3
通常来讲,如果一条语句以"("、"["、"l"、"/”、"+"或"一"开始,那么它极有可能和前一条语句合在一起解析。以"+"和"一"开始的语句并不常见,而以"("和"["开始的语句则非常常见,至少在一些JavaScript编码风格中是很普遍的。有些程序员喜欢保守地在语句前加上一个分号,这样哪怕之前的语句被修改了、分号被误删除了,当前语句还是会正确地解析。
在return、break和continue和随后的表达式之间不能有换行。
如果将"++"、"--"运算符用作后缀表达式,它和表达式应当在同一行,否则行尾将填补分号,例如:
x
++
y
这段代码将被解析成"x;++y",而不是"x++;y"
注释:
[Zs]: Unicode对字符做了分类,这种分类使用“通用类别值”表示,这里的“Zs”是其中的一种类别值,特指没有标志符号,但不属于控制和格式字符的空格字符。
《JavaScript权威指南 第六版 中文版》(一)的更多相关文章
- tcp/ip原理/三次握手/四次挥手
@ tcp/ip原理 1.1 tcp/ip三次握手 1.1.1 建立过程说明 a) 由主机A发送建立TCP连接的请求报文, 其中报文中包含seq序列号, 是由发送端随机生成的, 并且还将报文中SY ...
- 白话TCP/IP原理
TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议 ...
- <TCP/IP原理> (四) IP编址
1.IP地址的基本概念:作用.结构.类型 2.特殊地址:作用.特征 网络地址.广播地址(直接.受限) 0.0.0.0 环回地址 3.单播.多播.广播地址:特征 4.专用地址:作用.范围 5.计算和应用 ...
- <TCP/IP原理> (二) OSI模型和TCP/IP协议族
1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...
- <TCP/IP原理> (一)
1.协议和标准 2.标准化组织 3.Internet标准:RFC 4.Internet的管理机构 一.协议和标准 1.协议(Protocol) 一组控制数据通信的规则 三要素:语法(syntax).语 ...
- TCP/IP原理浅析
TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedRese ...
- [转] TCP/IP原理、基础以及在Linux上的实现
导言:本篇作为理论基础,将向我们讲述TCP/IP的基本原理以及重要的协议细节,并在此基础上介绍了TCP/IP在LINUX上的实现. OSI参考模型及TCP/IP参考模型 OSI模型(open syst ...
- TCP/IP原理简述
TCP/IP与OSI TCP/IP工作在第4层,在TCP/IP协议簇中,有两个不同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议),它们分别承载不同的应用.TCP协议提供可靠的服务,UDP ...
- <TCP/IP原理> (三) 底层网络技术
传输介质 局域网(LAN) 交换(Switching) 广域网(WAN) 连接设备 第三章 底层网络技术 引言 1)Interne不是一种新的网络 建立在底层网络上的网际网 底层网络——“物理网”,网 ...
- 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
随机推荐
- Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景
Seen.js 渲染3D场景为 SVG 或者 HTML5 画布.Seen.js 包含对于 SVG 和 HTML5 Canvas 元素的图形功能的最简单的抽象.所有这个库的其它组件都是不用关心将要渲染的 ...
- MontageJS:构建现代 Web App 的 HTML5 框架
MontageJS 可以帮助您构建高可扩展性和可维护性的 HTML5 应用.有了 MontageJS,开发人员可以创建可重用的用户界面组件和模块,组件和控制器之间的绑定属性,并且同步 DOM 查询和更 ...
- 一维Poisson方程计算
package com.smartmap.algorithm.equation.differential.partial.ellipsoidal; import java.io.FileOutputS ...
- Python正则表达式使用实例
最近做题需要使用正则表达式提取信息,正则表达式很强大,之前都是纸上谈兵,这次刚好动动手,简单实现下: 文本内容如下: var user={star: false, vip :false}; var f ...
- Javascript - Arraylike的7种实现
jQuery的崛起让ArrayLike(类数组)在javascript中大放异彩,它的出现为一组数据的行为(函数)扩展提供了基础. 类数组和数组相似,具有数组的某些行为,但是它相比数组可以更加自由的扩 ...
- <转>DevExpress使用经验总结
DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用 DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示 ...
- filezilla sftp 文件和linux 文件不同步的问题
删除掉以前的链接,重新建立链接就好了
- android开发中常见布局的注意点
常见布局的注意点 线性布局: 必须有一个布局方向 水平或者垂直 在垂直布局中 只有左对齐 右对齐 水平居中生效 在水平布局中 只有顶部对齐 底部对齐 垂直居中生效 权重:组件按比例分配屏幕的剩余部分( ...
- CEF3可行性
Chromium Embedded Framework 顾名思义,内嵌式CHROME,详细的介绍参阅 http://yogurtcat.com/posts/cef/hello-cef.html 为什么 ...
- 开启Apache mod_rewrite模块完全解答
启用mod_rewrite模块 在conf目录的httpd.conf文件中找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#去掉. ...