給你畫了一張圖:

語法文法如下:
Statement -> Block | VariableStatement
| EmptyStatement
| ExpressionStatement
| IfStatement
| IterationStatement
| ContinueStatement
| BreakStatement
| ReturnStatement
...
ExpressionStatement -> Expression;
Expression -> this | 基本表達式
| 屬性訪問表達式
| new表達式
| 函數調用表達式
| 函數表達式
| 自增/自減表達式
| 算術表達式
| 邏輯表達式
...
上述內容有簡化,詳細見ES規范第11、12、12.4章節。
那我再舉幾個例子:
a + 2 // 算術表達式,結果是一個數。new Car() // new表達式,結果是一個對象。(a + 2) > f(10) // 由算術表達式、分組表達式、關系表達式、函數調用表達式組合而成的復合表達式,由于最后運算的是關系運算,所以結果是一個布爾值。
var b = foo(); // 變量賦值語句。其中foo()就是一個表達式。while(i-- >= 0) console.log(this.children[i]); // While語句。里面也包含了若干個表達式。
到這里為止,你應該明白表達式和語句的區別了。但是還有一種讓它們倆顯得關系更加密切的語法結構,即:
表達式語句 = 表達式 + 分號
是不是很密切。
例如:
4 * num // 表達式4 * num; // 表達式語句exit() // 表達式exit(); // 表達式語句