本书用铁路图(railroad diagram)表示语法
空白
- 空白可能表现为格式化的字符或注释的形式,通常无意义。有点地方不能省略。
标识符
- 标识符被用于语句、变量、参数、属性名、运算符、标记。
- 标识符不能使用保留字。
数字
- 在内部表示为64位的浮点数
- 如果数字字面量有指数部分,这个字面量的值等于e之前的数字与10的e之后数字的次方相乘。如100===1e2。
- 负数可用前置运算符 - 加数字构成。
NaN
是一个数值,它表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括自己。Infinity
表示所有大于1.79769313486231570e+308的值
字符串
- 所有字符都是16位。
- 没有字符类型。
- 一旦创建,不可改变。
- 两个包含着完全相同的字符且字符顺序也相同的字符串被认为是相同的字符串,如
1
'c'+'a'+'t'==='cat'; //true
语句
switch
、while
、for
和do
语句允许有一个可选的前置标签(label
),它配合break
语句来使用。- 代码块是包在一对花括号中的一组语句。没有块级作用域。
- 一个expression语句可以给一个或多个变量或成员赋值,或者调用一个方法,或者从对象中删除一个属性。
- 最简单的表达式是字面量值、变量、内置的值、以new开头的调用表达式、以delete开头的属性提取表达式、包在圆括号中的表达式、以一个前置运算符作为前导的表达式,或者表达式后面跟着:
- 一个中置运算符与另一个表达式;
- 三元操作符;
- 一个函数调用;
- 一个属性提取表达式。
表:运算符优先级
运算符 | 说明 |
---|---|
. [] () | 提取属性和调用函数 |
delete new typeof + - ! | 一元操作符 |
* / % | 乘法、除法、求余 |
+ / | 加法/连接、减法 |
>= <= > < | 不等式运算符 |
=== !== | 等式运算符 |
&& | 逻辑与 |
|| | 逻辑或 |
?: | 三元 |
- 逻辑与&&,如果第1个运算数的值为假,那么运算符&&产生它的第1个运算数的值,否则产生第2个运算数的值。
- 逻辑||,如果第1个运算数的值为真,那么运算符||产生它的第1个运算数的值,否则产生第2个运算数的值。
字面量
- 对象字面量是一种可以方便地按指定规格创建新对象的表示法。
- 属性名可以是标识符或字符串。
- 属性名被当做字面量名而不是变量名来对待,所以对象的属性名在编译时才能知道。
- 数组字面量是一种可以方便地按指定规格创建新数组的表示法。
函数
- 函数字面量定义了函数值。
- 函数字面量可以有一个可选的名字,用于递归地调用自己。