3.1. 条件执行语句
根据不同的条件执行指定条件下的路径代码(符合此条件下的代码),从而达到不同的结果
1. if 语句
if语句是使用最频繁的条件执行语句
if(条件){
满足条件后执行的代码
}else{
其他条件时执行的代码
}
这里的条件可以是任意表达式,且求值的结果不一定是布尔值,ECMAScript
会自动调用Boolean()
函数来将条件结果改为布尔值,如果为true
就执行满足条件的代码,如果为false
就执行else里的代码
if语句可以多个一起使用,达到多条件判断效果
if(条件1){
代码1
}else if(条件2){
代码2
}else if(条件3){
代码3
}else{
代码4
}
每个if
通过else
来连接,以达到对同一个值的判断 ,通过由上到下的顺序来依次和条件进行匹配,最终执行匹配条件下的代码
2. switch 语句
switch
用于不同条件下执行不同代码,在条件较多时比if语句有优势,设定特定值来进行条件判断时推荐使用switch
switch( 表达式 ){
case value1:
// 表达式 等于 value1 时要执行的代码
break;
case value2:
// 表达式 等于 value2 时要执行的代码
break;
default:
// 表达式 不等于任何一个 value 时要执行的代码
}
- 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量
switch
可用于所有变量,不局限于数值- 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号
- switch 表达式的值会与结构中的 case 的值做比较
- 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
- 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码
let num = 25;
switch (true) {
case num < 0:
console.log("Less than 0.");
break;
case num >= 0 && num <= 10:
console.log("Between 0 and 10.");
break;
case num > 10 && num <= 20:
console.log("Between 10 and 20.");
break;
default:
console.log("More than 20.");
}
<
判断符输出的结果都为布尔值,所以需要switch
给与的值也为布尔值,以此来和变量进行判断.switch
中case
只支持判断是否全等,所以需要确认判断值和条件值是否匹配.
3.2 循环执行语句
- 在循环语句中满足循环条件即可循环,当条件不满足时退出循环,
- 当条件转换成布尔值只能是true时执行死循环
常量转换成布尔值只为while('aaaa')
while(1)
while(true)
true
时,死循环
1. for 循环
for(初始化变量;条件表达式;操作表达式){
//循环代码
}
例子:
for(let i=1;i<5;i++){
console.log(i);
}
无法通过while
循环实现的逻辑,同样不能通过for循环实现,for循环只是将循环相关的代码封装在一起而已.
在for循环里面,,初始化、条件表达式、变量自加表达式都不是必须填写的 当都没有填写时,它将变为无穷循环
for( ; ;){ //虽然不需要填写,但是 ; 必须写
//无穷循环
}
当只填写条件表达式时,和while循环样式就相同了
let sum = 5;
let i = 1;
for( ; i < sum ; ){
console.log(i);
i++;
}
2. 循环嵌套
for循环里可以再嵌套多个循环,不一定全是循环,也可以是判断语句,多个循环嵌套输出可以表达出更复杂的用法
例子:打印星星
var star = "";
for (let i = 1; i < 5; i++) {
for (let j = 1; j < i; j++) {
star += "⭐";
console.log(star);
}
}
3. while 循环
while
循环先检测循环条件,再执行循环代码,当不满足循环条件时退出循环
let i=1;
while(i<5){
console.log(i);
i+=1;
}
在while循环还未开始时检测循环条件,不满足直接不进入循环,转而执行后面的代码
4. do while 循环
这是一种后测试循环语句,即此循环先运行一遍,再判断循环条件,该循环体内部代码至少执行一次
let i = 0;
do {
i += 2;
console.log(i);
} while (i < 10);
当变量不满足循环条件,但进入循环一次又满足后:
let i = 10;
do {
i -= 2;
console.log(i);
} while (i < 10 && i >0);
5. break 和 continue 语句
break
和 continue
语句为执行循环代码提供了更严格的控制手段。其中,
break 语句用于立即退出循环,强制执行循环后的下一条语句。
let num = 0;
for (let i = 1; i < 10; i++) {
if (i % 5 == 0) {
break;
}
num++;
}
console.log(num); // 4
continue 语句也用于立即退出循环,但会再次从循环顶部 开始执行。
let num = 0;
for (let i = 1; i < 10; i++) {
if (i % 5 == 0) {
continue;
}
num++;
}
console.log(num); // 8
break 和 continue都可以与标签语句一起使用,返回代码中特定的位置。这通常是在嵌套循环中
通过内部循环的break跳出外部循环
let num = 0;
outermost:
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break outermost;
}
num++;
}
}
console.log(num); // 55
通过continue终止当前内部循环
let num = 0;
outermost:
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
continue outermost;
}
num++;
}
}
console.log(num); // 95
添加标签语句后,continue可以直接终止当前循环,开始外部下一阶段循环
6. 标签语句
- 标签语句用于给语句加标签,语法如下:
label: statement
- 下面是一个例子:
在这个例子中,start 是一个标签,可以在后面通过 break 或 continue 语句引用。标签语句的典型应用场景是嵌套循环。start: for (let i = 0; i < count; i++) {
console.log(i);
}