首页 > 语句、表达式、表达式语句怎么区分?有点混淆。

语句、表达式、表达式语句怎么区分?有点混淆。

语句、表达式、表达式语句怎么区分?
有点混淆。百度了一下,感觉仍然不是很清楚,有交叉,想听听大家的意见。


JS的语法确实好混乱,迭代太快


表达式用来计算出一个值,比如1+2就是一个表达式。

语句让某些事情发生,比如条件语句、循环语句等。

表达式语句就是在计算值的同时能够使某件发生,比如赋值语句a=1+2,先计算表达式1+2的值,然后将计算结果赋值给a


表达式,是可以计算出值的一段代码
语句,不仅包括表达式语句,还包括空语句、if语句、函数声明语句等等


这种东西百度反而会越来越混,并不需要弄清楚,所谓语言,不就是语句组成的?表达式,有运算符在其中的式子。这样粗点理解就可以了。


给你画了一张图:

语法文法如下:

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(); // 表达式语句

我的理解:
语句:一个分号“;”之前的内容,是一条语句
表达式:含等号“=”,加上等号左右两边的内容,组成一条语句
表达式语句:表达式后加上分号,就是一条表达式语句

【热门文章】
【热门文章】