词汇结构
词汇结构(Lexical Structure)表示某一语言的基本语法规则,比如变量名是什么样,注释分隔符是什么,语句之间如何分隔?
字符集
ES3 规范要求支持 Unicode v2.1+ 字符集,ES5 支持 Unicode v3+ 字符集。
JS 中的空白符号包括:普通空格(\u0020
),制表符(\u0009
),垂直制表符(\u000B
),换页符(\u000C
),非换行空格(\u00A0
),字节顺序标记(\uFEFF
),以及 Unicode Z 目录下的所有字符。
JS 将这些字符当作行结束符:换行符(\u000A
),回车(\u000D
),行分隔符(\u2028
),段分隔符(\u2029
)。
对于尚未支持 Unicode 的设备,可使用 Unicode 转换码表示 Unicode 字符。即用 6 个 ASCII 字符表示任意一个 16 位 Unicode 码点(codepoint):\u
开头,后跟 4 个 16 进制数字。比如 é
的 Unicode 转换码是 \u00E9
,因而如下两字符相等:
"café" === "caf\u00E9" // => true
标识符和关键字
严格模式下,禁止使用 arguments
, eval
作为变量名,函数名或参数名。🈲️
JS 还预定义了一些全局变量和函数,使用时记得避开这些名称:
encodeURI Infinity Number RegExp
...
URIError NaN JSON Math
可选的逗号
逗号虽然不是必需的,但有时候的逗号缺失会造成解析错误:
var y = x + f
(a+b).toString()
上面代码会被解析为:
var y = x + f(a+b).toString()
通常,如果语句以 (
, [
, /
, +
, -
开头,最好在最前面增加 ;
作为分隔符。