深入理解 JavaScript 中的表达式、运算符、语句和声明
在学习和使用 JavaScript 编程时,理解基本的语言构成要素至关重要。本文将详细介绍 JavaScript 中的表达式、运算符、语句和声明概念。
目录
表达式(Expressions)
什么是表达式
表达式是 JavaScript 中能够产生值的代码片段。任何能够被计算并返回一个值的代码都是表达式。
表达式的类型
-
原始表达式:直接量(字面量)和关键字,如数字、字符串、布尔值、
null
、undefined
。42; 'Hello, world!'; true; null; undefined;
-
对象初始化表达式:创建对象或数组。
{ name: 'Alice', age: 25 }; [1, 2, 3];
-
函数表达式:使用函数关键字创建匿名或命名函数。
function() { return 'Hello'; }; (function namedFunc() { return 'Hi'; });
-
类表达式:使用
class
关键字创建类。class {}; class MyClass {};
-
算术表达式:使用算术运算符计算值。
5 + 3; 10 * (2 + 3);
-
逻辑表达式:使用逻辑运算符返回布尔值。
true && false; 5 > 3 || 2 < 1;
-
条件(三元)表达式:
condition ? exprIfTrue : exprIfFalse;
表达式示例
// 数字字面量
let a = 10;
// 字符串字面量
let b = 'JavaScript';
// 算术表达式
let c = a * 2; // c 的值为 20
// 逻辑表达式
let isAdult = age >= 18;
// 函数表达式
let greet = function(name) {
return 'Hello, ' + name;
};
// 条件表达式
let max = a > b ? a : b;
运算符(Operators)
什么是运算符
运算符是用于操作数之间的计算、比较或逻辑操作的符号。运算符结合操作数形成表达式,并返回一个新值。
运算符的分类
-
算术运算符:用于数学计算。
- 加法:
+
- 减法:
-
- 乘法:
*
- 除法:
/
- 求余:
%
- 指数:
**
- 加法:
-
赋值运算符:用于给变量赋值。
- 简单赋值:
=
- 复合赋值:
+=
,-=
,*=
,/=
,%=
,**=
- 简单赋值:
-
比较运算符:用于比较两个值,返回布尔值。
- 相等:
==
- 全等:
===
- 不相等:
!=
- 不全等:
!==
- 大于/小于:
>
,<
- 大于等于/小于等于:
>=
,<=
- 相等:
-
逻辑运算符:用于逻辑运算。
- 与:
&&
- 或:
||
- 非:
!
- 与:
-
位运算符:用于按位操作整数。
- 按位与:
&
- 按位或:
|
- 按位异或:
^
- 按位非:
~
- 左移:
<<
- 右移:
>>
- 无符号右移:
>>>
- 按位与:
-
字符串运算符:连接字符串。
- 字符串连接:
+
- 字符串连接:
-
其他运算符:
- 条件(三元)运算符:
condition ? exprIfTrue : exprIfFalse
typeof
运算符:typeof operand
instanceof
运算符:object instanceof constructor
- 解构赋值运算符:
let { x, y } = obj;
- 条件(三元)运算符:
运算符示例
// 算术运算符
let sum = 5 + 3; // sum 为 8
let product = 4 * 2; // product 为 8
// 赋值运算符
let x = 10;
x += 5; // x 现在为 15
// 比较运算符
let isEqual = (x === 15); // isEqual 为 true
// 逻辑运算符
let isAdult = (age >= 18) && (age < 65);
// 字符串运算符
let message = 'Hello, ' + 'world!';
// 条件运算符
let access = isAdmin ? 'granted' : 'denied';
// typeof 运算符
console.log(typeof x); // 输出 'number'
// instanceof 运算符
console.log(dateObj instanceof Date); // 如果 dateObj 是 Date 的实例,输出 true
语句(Statements)
什么是语句
语句是执行特定操作的完整指令,通常以分号结束。语句可以包含表达式和关键字,控制程序的流程和行为。
常见的语句类型
-
表达式语句:由表达式组成,用于计算值。
x = 5;
-
条件语句:根据条件执行不同的代码块。
if
语句else
语句switch
语句
-
循环语句:重复执行代码块。
for
循环while
循环do...while
循环for...in
循环for...of
循环
-
跳转语句:控制程序流程。
break
continue
return
throw
-
声明语句:声明变量、函数或类。
var
,let
,const
function
class
-
异常处理语句:
try...catch
finally
语句示例
// 表达式语句
let total = price * quantity;
// 条件语句
if (score >= 60) {
console.log('Passed');
} else {
console.log('Failed');
}
// 循环语句
for (let i = 0; i < 5; i++) {
console.log(i);
}
// 跳转语句
while (true) {
if (condition) {
break;
}
}
// 声明语句
let name = 'Alice';
function greet() {
console.log('Hello');
}
// 异常处理语句
try {
throw new Error('Something went wrong');
} catch (error) {
console.error(error);
} finally {
console.log('Cleanup');
}
声明(Declarations)
什么是声明
声明用于定义标识符(变量、函数、类等),为其分配存储空间或定义其行为。声明不会立即执行代码,但为后续的代码提供了基础。
变量声明
var
声明
- 作用域:函数作用域或全局作用域。
- 变量提升:在作用域顶部被提升,但未赋值。
var x = 10;
function test() {
var y = 20;
}
let
声明
- 作用域:块作用域。
- 不允许重复声明。
- 暂时性死区(TDZ):在声明之前无法访问变量。
let x = 10;
if (true) {
let y = 20;
}
const
声明
- 作用域:块作用域。
- 必须在声明时初始化。
- 不可重新赋值。
const PI = 3.14159;
函数声明
- 使用
function
关键字声明,函数名可用于递归调用。
function add(a, b) {
return a + b;
}
- 函数提升:函数声明被提升到所在作用域的顶部。
类声明
- 使用
class
关键字声明,定义类的构造函数和方法。
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log('Hello, ' + this.name);
}
}
- 类的特性:
- 不可提升:类声明不会被提升,在声明之前无法访问。
- 严格模式:类内部默认使用严格模式。
总结
- 表达式是能够计算并返回值的代码片段,是程序的基本组成部分。
- 运算符用于对操作数进行计算、比较或逻辑操作,结合操作数组成表达式。
- 语句是执行特定操作的完整指令,控制程序的流程和行为。
- 声明用于定义标识符,为变量、函数或类分配存储空间或定义其行为。