编程语言中语句的本质(javascript版)

118 阅读2分钟

写代码跟写作文一样一样的,都是一句话一句话写出来的。
一套程序代码由一条一条的语句(statement)组成。 语句是程序执行的基本单元(unit)。

语句执行是在干嘛呢?

语句里面包含了表达式(expression),表达式用于求值,语句用于赋值。语句本质上都是赋值语句。给不同的变量赋值,在不同的条件下赋值,循环地赋值,等等。

计算机的计算,就是在不停地求值赋值。

以js为例,其语句有如下3大类:声明语句,流程控制语句,异常处理语句。

1、声明语句:

创建一个标识符,以方便赋值、求值、组合值。

  • 变量声明:var,let,const(生成一个变量以供赋值)
  • 函数声明:function (封装一组语句)
  • 类声明:class(封装变量与函数)
  • 导入导出:import, export (引入或导出变量、函数或类,作为资产使用)

2、流程控制语句:

识别不同的条件,进行分支赋值或循环赋值。本质都是跳转,跳转过去干嘛呢?求值赋值!

  • 条件语句:if,else,switch
  • 基础循环语句:for, while, do while,
  • 便利循环语句:for in, for of,

3、异常处理语句:

当求值或赋值出错时如何进行下一步

  • try catch finally

小结:

上面的三类语句中,声明语句可以看成基本语句,流程控制语句是编排语句,可以看成语句的语句,异常处理是出错后执行的语句。进一步总结,js的语句是三类语句:基本语句,语句的语句,出错后的语句。js是这样,其他所有编程语言也是这样。

其他语句:

js还有空语句,块语句,debugger语句,label语句,with语句(已废弃),生成器语句。这些语句,也是在进行控制与赋值。

所以本质上,程序就是在求值与赋值,而语句就是在组织与编排求值与赋值的逻辑。语句有很多,通过赋值这一套思维模型,可以把所有语句都串联起来
一般,表达式重点是求值,语句重点是赋值。如果赋值超出了当前函数的作用域,就容易产生副作用,这往往不利于追踪程序状态,不是太好的编程模式。