语句和表达式

本文详细解析了JavaScript中的表达式和语句,包括原始表达式、语句的分类以及它们的区别,旨在帮助开发者更好地理解JavaScript的底层逻辑。

表达式(expressions)和语句(statements)在javascript非常常见,但是就是这些常见的元素,有时候我们也未必能够正确的领会其要表示的含义和用法。这是因为我们总是对常见的东西本能的表示默认,好像它天生就该如此,为很少去考虑其背后所代表的含义。比如:if的条件中为什么能有赋值,立即执行函数为什么要用小括号给括起来调用等。

在区分表达式和语句之前,我们先分别对他们进行介绍:

表达式(expressions)


表达式 是一组可以计算出一个数值的有效的代码的集合

从概念上讲,有两种表达式: 它们是:把一个值赋值给一个变量和那些可以简单得到一个值的式子。比如,x=7 就是第一种。这个表达式用“=”运算符 把值7赋值给变量x。这个表达式自己的值等于7。而代码 3 + 4则是第二种表达式,这个表达式用“+”运算符把3和4相加却并没有将结果7赋值给一个变量。

表达式是JavaScript中的一个短语,由运算符构成,并运算产生结果的语法结构。每个表达式都会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数.下面的每行代码都是一个表达式:

var a = (5 + 6) / 2; //表达式:(5 + 6) / 2
var b = (function(){ return 25;})(); //表达式: (function(){ return 25;})()
foo(a*b); //表达式:a*b

语句(statements)

语句(statement)是为了完成某种任务而进行的操作。由“;(分号)”分隔的句子或命令。如果在表达式后面加上一个“;”分隔符,这就被称为“表达式语句”。它表明“只有表达式,而没有其他语法元素的语句”。

var a = (5 + 6) / 2; //整行,赋值语句
if(a>12) { statements} //条件语句
var o = {}; //赋值语句
(function(obj){ obj.b = 23;})(o||{}); //表达式语句

语句可以理解成一个行为.循环语句和if语句就是典型的语句.一个程序是由一系列语句组成的.JavaScript中某些需要语句的地方,你可以使用一个表达式来代替.这样的语句称之为表达式语句.但反过来不可以:你不能在一个需要表达式的地方放一个语句.比如,一个if语句不能作为一个函数的参数.

一般的javascript中的语句分为下面几种:

  (1)声明语句:变量声明和函数声明

  (2)赋值语句

  (3)控制语句:能够对语句执行顺序产生改变,包括条件语句和循环语句,当然还有比较特殊的标签语句。

  (4)表达式语句:这些语句去掉最后分号,都也可当表达式用的。常见的有:对象操作(new、delete)、函数调用(函数执行,必有返回值)等。

var num = 9; //声明、赋值语句
vloop: //标签语句
{    //其实这里大括号可以不需要的,在这里我只想向大家展示一下这种代码块结构而已
     for(var i=1; i<10; i++) { //循环语句
            if(i==num){ //条件语句
                  break vloop;
            }else{
                  num = num - 1; 
            }      
     }  
}     
console.log(num); //表达式语句,输出:5

语句和表达式的区别

语句和表达式的区别在于,前者主要为了进行某种操作,后者则是为了得到返回值。凡是JavaScript语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。表达式是语句的构成部分,而语句则又可以组成可执行代码块


表达式分类

1.原始表达式
原始表达式是表达式的最小单位,它们不再包含其他表达式。javascript中的原始表达式包括:直接量或常量、变量、保留字或关键字。
其他的还有:
数组和对象初始化表达式
函数定义表达式
属性访问表达式
函数调用表达式
对象创建表达式
算术表达式
逻辑表达式
比较表达式
赋值表达式
等等

### 编程中语句表达式的区别 在编程语言中,**语句(Statements)** **表达式(Expressions)** 是两个核心概念。它们的定义、功能使用场景存在显著差异。 #### 1. 定义 - **语句**:语句是程序中的指令,用于执行某种操作或控制程序流程。语句通常不会返回值,而是完成特定任务,例如变量声明、函数调用或控制流操作[^1]。 - **表达式**:表达式是由变量、常量、运算符其他元素组成的组合,其结果可以被计算为一个值。表达式总是返回某个值,即使该值可能未被使用[^2]。 #### 2. 功能用途 - **语句**:主要用于控制程序的行为,例如条件分支(`if-else`)、循环(`for`、`while`)、函数定义等。语句不直接参计算,而是用于组织代码逻辑[^1]。 - **表达式**:用于计算值,例如算术运算(`a + b`)、布尔逻辑(`x && y`)、函数调用(`func()`)等。表达式的结果可以被赋值给变量或作为其他表达式的一部分。 #### 3. 是否返回值 - **语句**:通常不返回值。例如,`if` 语句的作用是根据条件执行不同的代码块,而不是返回某个值。 - **表达式**:始终返回值。例如,`a + b` 返回 `a` `b` 的,`func()` 返回函数的执行结果[^2]。 #### 4. 示例对比 以下是一个简单的 C++ 示例,展示了语句表达式的区别: ```cpp #include <iostream> using namespace std; int main() { // 语句:声明变量 int a = 5; // 变量声明语句 // 表达式:计算 a + 3 int b = a + 3; // 表达式 a + 3 被计算并赋值给 b // 语句:条件分支 if (b > 7) { // 条件语句 cout << "b is greater than 7" << endl; } else { cout << "b is not greater than 7" << endl; } // 表达式:函数调用 cout << "The value of b is: " << b << endl; // 表达式 b 被计算并输出 return 0; // 返回语句 } ``` #### 5. 在不同编程范式中的表现 - **命令式编程**:语句占据主导地位,程序通过一系列语句来描述如何完成任务。例如,C Java 中的大部分代码由语句组成[^1]。 - **函数式编程**:表达式更为重要,程序主要由表达式的组合构成。例如,在 Haskell 中,几乎所有代码都可以被视为表达式[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值