0007. 语句和表达式
- 1. 📒 表达式(Expression)和语句(Statement)
- 2. 💻 demos.1 - 理解语句
- 3. 💻 demos.2 - 理解表达式
- 4. ✍️ 练习题
- 5. 🤔 问:写在前面的语句一定先于后面的语句执行吗?
- 6. 🤔 问:如何区分表达式和语句?
- 知识点:
- 语句
- 表达式
- 问:如何区分表达式和语句?
- 这篇笔记介绍了什么是语句,什么是表达式。其实语句和表达式是非常类似的,从概念上不容易区分。并且从定义来看,它们之间的关系还不是互斥的,而是相交的关系。也就是说有以下可能:
xxx
是语句,不是表达式xxx
是表达式,不是语句xxx
可能同时是语句和表达式
- 很多时候我们并没有必要严格区分开我们所写某一代码片段到底是“表达式”还是“语句”,更重要的是能够理解这玩意儿能否“产生”一个值。
1. 📒 表达式(Expression)和语句(Statement)
- 表达式(Expression)和语句(Statement)是编程语言中的基本元素,它们在 JavaScript 或者其他编程语言中具有不同的作用和含义。
- 语句
- JavaScript 程序的 执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。
- 语句是 为了完成某种任务而进行的操作。
- 语句以 分号结尾(非强制)。
- 分号前面可以没有任何内容,JavaScript 引擎将其视为 空语句。
- 语句是执行某种行为的一段代码,不一定会产生值。
- 表达式
- 表达式是指 一个为了得到返回值的计算式。
- 表达式 不需要分号结尾。
- 表达式(Expression)是一段代码,它会产生一个值。
2. 💻 demos.1 - 理解语句
javascript
var a = 1 + 3;
// 这就是一条语句。
// 语句(statement)是为了完成某种任务而进行的操作。
// 这条语句先用 var 命令,声明了变量 a,然后将 1 + 3 的运算结果赋值给变量 a。
1
2
3
4
2
3
4
javascript
// 【写法 1】
var a = 1 + 3; var b = 'abc';
// 语句以分号结尾(非强制),一个分号就表示一个语句结束。
// 多个语句可以写在一行内。
// 【写法 2】
var a = 1 + 3
var b = 'abc'
// 语句结尾的分号并非强制的,可以省略。
// 写法 2 和写法 1 是等效的。
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
javascript
;;;
// 分号前面可以没有任何内容,JavaScript 引擎将其视为空语句。
// 上面的代码就表示 3 个空语句。
1
2
3
2
3
javascript
if (x === 10) {
console.log('x is 10')
}
// 语句(Statement)是执行某种行为的一段代码,不一定会产生值。
// 它通常会改变程序的状态(例如,循环,分支,函数调用等)。
// 上面这是一条 if 条件语句,它执行了某种操作,但并没有返回值。
1
2
3
4
5
6
2
3
4
5
6
3. 💻 demos.2 - 理解表达式
javascript
var a = 1 + 3;
// 表达式是指一个为了得到返回值的计算式
// 以这个赋值语句 var a = 1 + 3; 为例
// 其中的 1 + 3 就叫做表达式(expression)
1
2
3
4
2
3
4
javascript
1 + 3;
'abc';
// 表达式不需要分号结尾。
// 一旦在表达式后面添加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。
// 上面两行语句只是单纯地产生一个值,并没有任何实际的意义。
1
2
3
4
5
2
3
4
5
javascript
5
3 + 4
x
x = 10
// 上面这些都是表达式,它们都会产生一个值。
// 表达式(Expression)是一段代码,它会产生一个值。
// 表达式是一种求值操作,表达式本身以及它的子表达式组合在一起代表了某种值。
1
2
3
4
5
6
7
2
3
4
5
6
7
4. ✍️ 练习题
javascript
// 以下是一些 JavaScript 的代码示例,判断它们是表达式还是语句:
// 1. var a = 5;
// 2. a + b
// 3. if (a > b) { console.log("a is greater than b"); }
// 4. return a * b;
// 5. a++
// 6. function myFunction() { return a * b; }
// 7. 3.14159
// 8. console.log("Hello, world!");
// 9. a = b = 5;
// 10. for (var i = 0; i < 5; i++) { console.log(i); }
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
答:
javascript
// 以下是一些 JavaScript 的代码示例,判断它们是表达式还是语句:
// 1. var a = 5;
// 2. a + b
// 3. if (a > b) { console.log("a is greater than b"); }
// 4. return a * b;
// 5. a++
// 6. function myFunction() { return a * b; }
// 7. 3.14159
// 8. console.log("Hello, world!");
// 9. a = b = 5;
// 10. for (var i = 0; i < 5; i++) { console.log(i); }
// 1. 语句(声明语句)
// 2. 表达式(算术表达式)
// 3. 语句(条件语句)
// 4. 语句(返回语句),但 a * b 是表达式
// 5. 表达式(递增表达式),也可以作为语句使用
// 6. 语句(函数声明语句),但 return a * b; 包含了返回语句和表达式
// 7. 表达式(字面量表达式)
// 8. 语句(函数调用语句),但 "Hello, world!" 是表达式
// 9. 表达式(赋值表达式),也可以作为语句使用
// 10. 语句(循环语句),但 i < 5 和 i++ 都是表达式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
5. 🤔 问:写在前面的语句一定先于后面的语句执行吗?
写在前面的语句不一定先执行
在大多数情况下,我们可以认为代码是按照从上到下的顺序执行的。但是,具体哪些语句先执行,哪些语句后执行,一两句话说不清楚,这涉及到的因素有很多,比如:异步操作、事件驱动、函数调用、控制流语句…… 这些都将是我们在学习时需要重点掌握的知识点。
6. 🤔 问:如何区分表达式和语句?
表达式通常会产生一个值,而语句则是执行操作但不一定产生值。
表达式可以是语句的一部分,并且表达式总是返回一个值。语句则是执行一个动作或一系列动作,不一定返回值。在 JavaScript 中,许多表达式可以独立存在并作为语句,这通常称为表达式语句。
- 问:
a = b = 5;
这是表达式还是语句? - 答:即是表达式,又是语句。
很多时候我们并没有必要严格区分开我们所写某一代码片段到底是“表达式”还是“语句”,更重要的是能够理解这玩意儿能否“产生”一个值。