知识卡片

语句不产价值

普通读书笔记卡 · 1490.b

内容

表达式会产生值,语句只执行动作、改变程序流程;if/switch/while/for 等语句依赖表达式的值来决定分支或终止循环,但语句本身不产生可复用的值。把可组合逻辑写成表达式能提升抽象能力,把副作用集中在语句里则更容易看清程序到底改变了什么。发散:可测试代码通常让”计算值”和”产生副作用”两类代码分离,便于单独验证。

参考来源

- 位置:《JavaScript语言精粹(修订版)》第2章《语法 Grammar》"语句"与"表达式"两节 - 结论依据:原文分别定义语句(按从上到下顺序执行,通过条件/循环/跳转语句改变执行序列)和表达式(字面量、变量、运算符组合产生值),并说明 if、while 等语句依据表达式的值决定流程,据此可以推出"表达式产值、语句执行动作"的区分。 - 原始内容:语句通常按照从上到下的顺序被执行。JavaScript可以通过条件语句(if和switch)、循环语句(while、for和do)、强制跳转语句(break、return和throw)和函数调用来改变执行序列……if语句根据表达式的值改变程序流程。表达式的值为真时执行跟在其后的代码块,否则,执行可选的else分支。