2.1字符集
JavaScript程序是用Unicode字符集编写的。Unicode是ASCII和Latin-1的超集,并支持地球上几乎所有再用的语言。
2.1.1区分大小写
JavaScript是区分大小写的语言。也就是说,关键字、变量、函数名和所有的标识符(identifier)都必须采取一致的大小写形式。比如,关键字“while”必须写成“while”,而不能写成“While”或“WHILE”。
HTML并不区分大小写(尽管XHTML区分大小写)。由于它和客户端JavaScript联系紧密,因此这点区别很容易混淆。
在HTML中,这些标签和属性名可以使用大写也可以是小写,而在JavaScript中则必须是小写。例如,在HTML中设置事件处理程序时,onclick可以写成onClick,但在JavaScript代码(或者XHTML文档)中,必须使用小写的onclick。
2.1.2空格、换行符和格式控制符
JavaScript会忽略程序中的标识(token)之间的空格。多数情况下,JavaScript同样会忽略换行符。
由于可以在代码中随意使用空格或换行,因此可以采用整齐、一致的缩进来形成统一的编码风格,从而提高代码的可读性。
除了可以识别普通的空格符(\u0020)之外,JavaScript还可以识别如下这些表示空格的字符:
水平制表符(\u0009),垂直制表符(\u000B),换页符(\u000C),不中断空白符(\u00A0),字节序标记(\uFEFF),以及在Unicode中所有Zs类别的字符。
JavaScript将如下字符识别为行结束符:
换行符(\u000A),回车符(\u000D),行分隔符(\u2028),段分隔符(\u2029)。
回车符加换行符在一起被解析为一个单行结束符。
Unicode格式控制字符,比如“从右至左书写标记”(\u200F)和“从左至右书写标记”(\u200E),控制着文本的视觉显示,这对于一些非英文文本的正确显示来说是至关重要的,这些字符可以用在JavaScript的注释、字符串直接量和正则表达式直接量中,但不能用在标识符中。
但有个例外,零宽连接符(\u200D)和零宽非连接符(\uFEFF)是可以出现在标识符中的,但不能作为标识符的首字符。
2.1.3Unicode转义序列
在有些计算机硬件和软件里,无法显示或输出Unicode字符全集。为了支持那些使用老旧技术的程序员,JavaScript定义了一种特殊序列,使用6个ASCII字符来代表任意16位Unicode内码。
这些Unicdoe转义序列均以\u为前缀,其后跟随4个十六进制数(使用回溯子以及大写或小写的字母A~F表示)。这种Unicode转义写法可以用在JavaScript字符串直接量、正则表达式直接量和标识符中(关键字除外)。如下两个JavaScript字符串是完全一样的:
Unicode转义写法也可以出现在注释中,但由于JavaScript会将注释忽略,它们只是被当成上下文中的ASCII字符处理,而且并不会被解析为其对应的Unicode字符。
2.1.4标准化
Unicode允许使用多种方法对同一个字符进行编码。
在文本编辑器中,这两种编码的显示结果一模一样,但它们的二进制编码表示是不一样的,在计算机里也不相等。
Unicode标准为所有字符定义了一个首选的编码格式,并给出了一个标准化的处理方式将文本转换为一种适合比较的标准格式,JavaScript会认为它正在解析的程序代码已经是这种标准格式,不会再对其标识符、字符串或正则表达式作标准化处理。
2.2注释
JavaScript支持两种格式的注释。
在行尾“//”之后的文本都会被JavaScript当做注释忽略掉。
此外,“/*”和“*/”之间的文本也会当做注释,这种注释可以跨行书写,但不能有嵌套的注释。
2.3直接量
所谓直接量(literal),就是程序中直接使用的数据值。下面列出的都是直接量:
- 12 //数字
- 1.2 //小数
- "hello world" //字符串文本
- ‘Hi‘ //另一个字符串
- true //布尔值
- /javascript/gi //正则表达式直接量(用做模式匹配)
- null //空
2.4标识符和保留字
标识符就是一个名字。在JavaScript中,标识符用来对变量和函数进行命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。
JavaScript标识符必须以字母、下划线(_)或美元符($)开始。后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便JavaScript可以轻易区分开标识符和数字)。
出于可移植性和易于书写的考虑,通常我们只是用ASCII字母和数字来书写标识符。
保留字
JavaScript把一些标识符拿出来用做自己的关键字。因此,就不能再在程序中把这些关键字用做标识符了。
2.5可选的分号
和其他许多编程语言一样,JavaScript使用分号(;)将语句分隔开。
JavaScript中,如果语句各自独占一行,通常可以省略语句之间的分号。
JavaScript并不是在所有换行出都填补分号:只有在缺少了分号就无法正确解析代码的时候,JavaScript才会填补分号。
推荐手动填写行尾的显式分号,这样可以方便调试并且避免不必要的错误。