1 字符集
JavaScript 程序是用 Unicode 字符集编写的。Unicode 是 ASCII 和 Latin-1 的超集,并支持地球上几乎所有在用的语言。
1.1 字符的 Unicode 表示法
JavaScript 字符允许采用 Unicode 表示法,但是只限于 Unicode 码点在 \u0000~\uFFFF 之间的字符。超出这个范围的字符,必须用 2 个双字节的形式表示。
'\u0041' // => "A"
'\u20BB7' // => "₻7"
'\uD842\uDFB7' // => "��"
ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。
'\u{41}' // => "A"
'\u{20BB7}' // => "��"
'\u{20BB7}' === '\uD842\uDFB7' // => true
1.2 区分大小写
JavaScript 是区分大小写的语言。所有的标识符(identifier)都必须采取一致的大小写形式。但是Html并不区分大小写(尽管Xhtml区分大小写)。
1.3 空格、换行符和格式控制符
JavaScript 会忽略程序中的标识(token)之间的空格。除了可以识别普通的空格符(\u0020),JavaScript 还可以识别:水平制表符(\u0009)、垂直制表符(\u000B)、换页符(\u000C)、不换行空格符(\u00A0)、零宽不换行空格符(\uFEFF)等 Unicode 中的空白字符。
JavaScript 将如下字符识别为换行符:换行符(\u000A)、回车符(\u000D)、行分隔符(\u2028)、段分隔符(\u2029)。回车符加换行符在一起被解析为一个单行结束符。多数情况下 JavaScript 也会忽略换行符,但以下两种情况例外:
// 1 涉及 return、break、continue 这三个关键字的时候
return
true
/* 上面代码本意 “return true”
但是 JavaScript 会解析成 “return; true”
*/
// 2 涉及 ++ 和 -- 运算符的时候
x
++
y
/* 上面代码本意 “x++; y”
但是 JavaScript 会解析成 “x; ++y”
*/
控制符控制文本的视觉显示,比如:从右至左书写标记(\u200F)和从右至左书写标记(\u200E)。同空格、换行符,格式控制符不能用在标识符(比如:变量名)中。但有个例外, 零宽连接符(\u200D)和零宽不连接符(\u200C)可以出现在标识符中,但不能作为标识符的首字符。
var A\u200DB = 'AB'
console.log('A\u200DB = ' + A\u200DB) // => AB = AB
2 注释
Javascript 注释的语法与 C ++ 等语言中的语法相同
// 单行注释
/* 这是一个更长的,
多行注释
*/
/* 然而, 你不能, /* 嵌套注释 */ 语法错误 */
3 字面量
字面量(literal,或者称直接量)就是程序中直接使用的数据值,如:
12 // 数字
1.2 // 小数
"hello world" // 字符串文本
'hi' // 另一个字符串
true // 布尔值
false // 另一个布尔值
/javascript/gi // 正则表达式直接量(用做模式匹配)
null // 空
{x: 1, y: 2} // 对象
[1, 2, 3, 4, 5] // 数组
4 标识符和保留字
在 JavaScript 中标识符用来对变量和函数进行命名,或者用作 JavaScript 代码中某些循环语句中的跳转位置的标记。JavaScript 标识符必须以字母、下划线(_)或美元符($)开始,后续的字符可以是字母、数字、下划线或美元符。
和其他编程语言一样,JavaScript 保留了一些标识符为自己所用。保留字不能用作普通的标识符。在 MDN Web Docs 中查看 JavaScript 保留字。
另外,JavaScript 预定义了很多全局变量和函数,即 JavaScript 内置对象,应当避免把它们的名字用做变量名和函数名。在 MDN Web Docs 中查看 JavaScript 内置对象。