参考文章资源:https://zhuanlan.zhihu.com/p/38622128

关于语句和表达式的理解,阮一峰的书上有写到:

一般情况下,在js里每一行就是一个语句。

语句是为了完成某种任务而进行的操作,比如赋值语句:

var a = 1+3;

在这条语句中,上面的1+3就是表达式。
语句和表达式的区别在于,语句是为了进行某种操作,一般情况下不需要返回值,而表达式都是为了得到返回值,一定会返回一个值(这里的值不包括undefined)。

上面说了那么多,其实懂得人应该也都懂了,但是不懂得人还是不会清楚,因为我也觉的说的有点含糊,其实最简单的判断语句和表达式的方法有两种,下面给大家介绍一下:

1.利用if语句来判断

if(xxx){},如果没有报错就说明xxx是表达式,因为if括号里面需要的是布尔值,只要是有这个值就是表达式;

if(a = 1){}
undefined
if(var a = 1){}
VM201:1 Uncaught SyntaxError: Unexpected token 'var'

上面的a=1放在if里没有报错说明a=1是表达式,而下面的var a=1报错了,所以说明是语句,另外只要是用var声明的都是语句,如果说的还不够清楚可以在控制台下打印一下var a=1

2.利用变量赋值来判断
因为表达式得到的是一个值,所以表达式可以赋值给一个变量,而如果是语句的话就会报错。

x = (a + 1)
2
x = (var a = 1    )
VM307:1 Uncaught SyntaxError: Unexpected token 'var'

上面的代码,因为a+1是一个表达式他得到的是一个值,所以赋值给一个变量x不会报错,而var a =1是一个语句,将他赋值给了x就会报错(为了确保左右两边都是一个整体,所以右边要加括号)。