JavaScript中的条件语句与循环结构
JavaScript 中的条件语句
在 JavaScript 编程中,条件语句允许我们根据不同的条件执行不同的代码块。这为程序增加了灵活性,使其能够根据特定情况做出决策。
if 语句
if
语句是最基本的条件语句。它的语法如下:
if (condition) {
// 如果 condition 为 true,执行这里的代码
}
这里的 condition
是一个布尔表达式,它可以是比较运算、逻辑运算等结果为 true
或 false
的表达式。例如:
let num = 10;
if (num > 5) {
console.log('数字大于 5');
}
在这个例子中,变量 num
的值为 10
,num > 5
的结果为 true
,所以会执行 console.log('数字大于 5');
这行代码,输出“数字大于 5”。
if...else 语句
if...else
语句在 if
语句的基础上增加了另一个分支,当 condition
为 false
时执行 else
块中的代码。语法如下:
if (condition) {
// 如果 condition 为 true,执行这里的代码
} else {
// 如果 condition 为 false,执行这里的代码
}
例如:
let age = 18;
if (age >= 18) {
console.log('你已经成年');
} else {
console.log('你还未成年');
}
这里变量 age
为 18
,age >= 18
为 true
,所以输出“你已经成年”。如果 age
的值小于 18
,则会输出“你还未成年”。
if...else if...else 语句
当需要根据多个条件进行判断时,可以使用 if...else if...else
语句。它的语法如下:
if (condition1) {
// 如果 condition1 为 true,执行这里的代码
} else if (condition2) {
// 如果 condition1 为 false 且 condition2 为 true,执行这里的代码
} else {
// 如果所有条件都为 false,执行这里的代码
}
例如,根据学生的成绩给出不同的评价:
let score = 85;
if (score >= 90) {
console.log('优秀');
} else if (score >= 80) {
console.log('良好');
} else if (score >= 60) {
console.log('及格');
} else {
console.log('不及格');
}
在这个例子中,score
为 85
,score >= 90
为 false
,score >= 80
为 true
,所以输出“良好”。
三元运算符(条件运算符)
三元运算符是 if...else
语句的一种简洁写法。它的语法是:
condition? expression1 : expression2;
如果 condition
为 true
,则返回 expression1
的值;如果 condition
为 false
,则返回 expression2
的值。例如:
let num = 10;
let result = num > 5? '大于 5' : '小于等于 5';
console.log(result);
这里 num > 5
为 true
,所以 result
的值为“大于 5”,最终输出“大于 5”。
switch...case 语句
switch...case
语句用于基于不同的条件执行不同的代码块。它比较一个表达式的值与多个 case
的值,语法如下:
switch (expression) {
case value1:
// 如果 expression 的值等于 value1,执行这里的代码
break;
case value2:
// 如果 expression 的值等于 value2,执行这里的代码
break;
default:
// 如果 expression 的值与所有 case 的值都不相等,执行这里的代码
}
例如,根据星期几输出不同的信息:
let day = 3;
switch (day) {
case 1:
console.log('星期一');
break;
case 2:
console.log('星期二');
break;
case 3:
console.log('星期三');
break;
case 4:
console.log('星期四');
break;
case 5:
console.log('星期五');
break;
case 6:
console.log('星期六');
break;
case 7:
console.log('星期日');
break;
default:
console.log('无效的日期');
}
这里 day
的值为 3
,所以会输出“星期三”。注意 break
关键字的作用,它用于终止 switch
语句的执行,如果没有 break
,程序会继续执行下一个 case
的代码,直到遇到 break
或 switch
结束。例如:
let num = 2;
switch (num) {
case 1:
console.log('一');
case 2:
console.log('二');
case 3:
console.log('三');
}
在这个例子中,num
的值为 2
,由于没有 break
,程序会输出“二”“三”。
JavaScript 中的循环结构
循环结构允许我们重复执行一段代码,直到满足特定条件为止。JavaScript 提供了多种循环结构,每种都有其适用场景。
for 循环
for
循环是最常用的循环结构之一,它用于已知循环次数的情况。语法如下:
for (initialization; condition; increment) {
// 循环体代码
}
initialization
:初始化变量,通常是一个计数器,只在循环开始时执行一次。condition
:循环条件,每次循环开始前检查此条件,如果为true
,则执行循环体;如果为false
,则终止循环。increment
:每次循环结束后执行的操作,通常是对计数器的增加或减少。
例如,输出 1 到 10 的数字:
for (let i = 1; i <= 10; i++) {
console.log(i);
}
在这个例子中,let i = 1
初始化变量 i
为 1
,i <= 10
是循环条件,只要 i
小于等于 10
就继续循环,i++
每次循环结束后将 i
的值增加 1
。
for
循环还可以用于遍历数组。例如:
let fruits = ['苹果', '香蕉', '橙子'];
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
这里通过 for
循环遍历 fruits
数组,i
作为索引,依次输出数组中的每个元素。
while 循环
while
循环用于在条件为 true
时重复执行代码块。语法如下:
while (condition) {
// 循环体代码
}
例如,计算 1 到 100 的累加和:
let sum = 0;
let i = 1;
while (i <= 100) {
sum += i;
i++;
}
console.log(sum);
在这个例子中,i <= 100
是循环条件,只要 i
小于等于 100
,就执行 sum += i
将 i
的值累加到 sum
中,然后 i++
增加 i
的值。
while
循环需要注意避免死循环,即条件永远为 true
的情况。例如:
// 以下代码会导致死循环
while (true) {
console.log('这是一个死循环');
}
这样的代码会一直输出“这是一个死循环”,除非强制终止程序。
do...while 循环
do...while
循环与 while
循环类似,但它先执行一次循环体,然后再检查条件。语法如下:
do {
// 循环体代码
} while (condition);
例如:
let num = 0;
do {
console.log(num);
num++;
} while (num < 5);
在这个例子中,首先会执行一次 console.log(num)
和 num++
,然后检查 num < 5
的条件。如果条件为 true
,则继续循环;如果为 false
,则终止循环。所以会输出 0
1
2
3
4
。
循环中的 break 和 continue 关键字
- break 关键字:用于立即终止循环。例如:
for (let i = 1; i <= 10; i++) {
if (i === 5) {
break;
}
console.log(i);
}
在这个例子中,当 i
等于 5
时,执行 break
关键字,循环立即终止,所以只会输出 1
2
3
4
。
- continue 关键字:用于跳过当前循环的剩余部分,直接进入下一次循环。例如:
for (let i = 1; i <= 10; i++) {
if (i === 5) {
continue;
}
console.log(i);
}
这里当 i
等于 5
时,执行 continue
,跳过 console.log(i)
这一行,直接进入下一次循环,所以会输出 1
2
3
4
6
7
8
9
10
。
嵌套循环
在 JavaScript 中,我们可以在一个循环内部再嵌套另一个循环,这称为嵌套循环。最常见的是在 for
循环中嵌套 for
循环。例如,打印九九乘法表:
for (let i = 1; i <= 9; i++) {
for (let j = 1; j <= i; j++) {
let result = i * j;
process.stdout.write(`${j}×${i}=${result}\t`);
}
console.log();
}
在这个例子中,外层 for
循环控制行数,内层 for
循环控制每行的乘法运算数量。process.stdout.write
用于在同一行输出内容,\t
是制表符用于对齐,console.log()
用于换行。
嵌套循环也可以用于处理多维数组。例如,二维数组的遍历:
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
console.log(matrix[i][j]);
}
}
这里外层 for
循环遍历二维数组的行,内层 for
循环遍历每行中的元素。
循环的性能优化
在使用循环时,性能是一个需要考虑的因素。以下是一些优化建议:
- 减少循环内的计算:将可以在循环外计算的表达式放在循环外。例如:
// 不好的写法
for (let i = 0; i < array.length; i++) {
let result = complexCalculation() * anotherCalculation();
// 其他操作
}
// 好的写法
let factor1 = complexCalculation();
let factor2 = anotherCalculation();
for (let i = 0; i < array.length; i++) {
let result = factor1 * factor2;
// 其他操作
}
- 避免不必要的嵌套循环:如果可以通过其他方式解决问题,尽量避免使用多层嵌套循环,因为嵌套循环的时间复杂度会随着层数增加而迅速增长。例如,在某些情况下,可以使用
map
、filter
等数组方法替代嵌套循环来处理数组。 - 使用更高效的循环类型:对于已知循环次数的情况,
for
循环通常比while
循环更高效,因为for
循环的初始化、条件判断和递增操作在同一行,更容易被编译器优化。
条件语句与循环结构的结合使用
在实际编程中,条件语句和循环结构常常结合使用,以实现更复杂的逻辑。
在循环中使用条件语句
例如,在遍历数组时,只处理满足特定条件的元素。假设我们有一个数组,需要找出其中所有的偶数并计算它们的和:
let numbers = [1, 2, 3, 4, 5, 6];
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 === 0) {
sum += numbers[i];
}
}
console.log(sum);
这里在 for
循环中使用 if
语句判断数组元素是否为偶数,如果是则累加到 sum
中。
在条件语句中使用循环
比如,根据用户输入的数字,决定是否执行一个循环操作。例如,用户输入一个数字,如果这个数字大于 10,就输出从 1 到该数字的所有奇数:
let num = parseInt(prompt('请输入一个数字'));
if (num > 10) {
for (let i = 1; i <= num; i += 2) {
console.log(i);
}
}
这里先通过 if
语句判断用户输入的数字是否大于 10,如果是,则使用 for
循环输出从 1 到该数字的所有奇数。
总结
条件语句和循环结构是 JavaScript 编程中非常重要的组成部分。条件语句让程序能够根据不同情况做出决策,而循环结构则实现了代码的重复执行,提高了代码的效率和可维护性。通过合理地使用这些结构,并注意性能优化,我们可以编写出高效、健壮的 JavaScript 程序。无论是简单的脚本还是复杂的 Web 应用程序,对条件语句和循环结构的熟练掌握都是必不可少的。在实际编程中,不断练习和积累经验,能够更好地运用它们来解决各种问题。
希望这篇文章能帮助你深入理解 JavaScript 中的条件语句与循环结构,并在实际编程中灵活运用。如果你还有其他问题或需要进一步的学习,欢迎继续探索相关的技术文档和教程。