2.流程控制语句
语句结构分类:
- 顺序结构 js默认由上至下执行
- 分支结构 js会根据条件的判断,决定是否执行某段代码
- 循环结构 js会根据条件的判断,反复的执行某段代码
分支语句
单分支
if后面()当中计算出来的最终一定是布尔值;
f执行过程:
1. 先计算小括号当中的值
2. 根据小括号当中的值,转化为布尔值
3. 根据转化出来的布尔值,决定是否需要执行花括号当中的代码块
双分支(三元表达式)
把一件事分成两种情况去处理;
if(一般都是一个表达式,但是最终只要有值就行,并且这个值最终会转化为boolean){
代码块;
}else{
代码块;
}
如果以后我们碰见if...else双分支语句,而且每个分支当中只有一条语句,就最好改成三元表达式(问号冒号表达式)
单分支和双分支分析
单分支和双分支其实都可以理解为双分支,也就是把一件事分成两种情况去处理,符合条件和不符合条件,
单分支只是处理了符合条件的,不符合条件的不管
双分支是都要处理;
多分支
多分支是把一件事分成多种情况去处理;
if (表达式) {
代码块
} else if (表达式) {
代码块
} else if (表达式) {
代码块
} else {
代码块
}
switch....case分支语句
switch 语句执行过程:
- 如果switch后面的小括号是表达式先求出switch后面表达式的值,否则跳过
- 再看case后面是表达式还是值,如果是表达式则求出值再和switch的值相比较,否则直接比较(注意是全等比较)
- 如果case后面的值和switch后面的值相等,则执行case后面的代码块,如果不等,则看下一个case的值,如果所有case的值和switch的值都不相等,则执行default(注意:无论default放在switch代码块的任何位置,都将最后执行)
- 再看case后面是否有break;如果没有,则继续向下执行,如果有,则终止本次switch循环
注意:case后面没有{},只有:
switch(表达式或者直接是个值){
case 值/表达式:
代码块;
break;
case 值/表达式:
代码块;
break;
default:
代码块;
break;
}
循环语句
for循环
语法
for(代码块1;代码块2;代码块3){
代码块4;
}
代码块1一般是初始化表达式;
代码块2一般是条件表达式;
代码块3 一般是自增自减表达式;
执行过程
第一次循环:
首先执行代码块1
接着执行代码块2
然后再去执行代码块4
最后执行代码块3
非第一次:
首先执行代码块2
接着执行代码块4
最后执行代码块3
for的隐藏作用域
for 有一个隐藏的作用域,这个作用域在for的()中产生,
for首先定义一个变量,然后进行判断,然后执行子作用域中的代码,再执行代码块3
例如如下for循环,实际上存在三个子作用域
for(let i=0;i<3;i++){
console.log(i);
}
//类似这样
function fn() {
let i=0;
return function () {
console.log(i);
i++;
}
}
let b=fn();
b();
b();
b();
for中用var声明的变量会暴露到全局
在for循环中使用var,变量会暴露在全局中
for (var i = 0; i < 3; i++) {}
console.log(i);
//类似这样
var i;
function fn() {
i = 0;
return function () {
console.log(i);
i++;
}
}
let b = fn();
b();
b();
b();
while循环
while (一般都是条件表达式) {
循环体
}
表达式一般写循环变量的结束条件;
在写控制条件前需要初始化一个循环变量;
循环变量的自增量写在循环体的最后;
do...while循环
do{
循环体代码块;
}while(表达式)
while和do...while的区别:
while循环执行的时候,会先进行条件判断,如果条件为真,就执行循环体,如果为假,就跳出循环;
do...while执行的时候,会先执行一遍循环体,然后再进行条件判断,如果条件为真,继续执行循环体,如果条件为假,就跳出循环;
break和continue的关键字
continue
作用:结束本次循环,返回从下一次继续开始
break
作用1:在switch语句当中是跳出switch
作用2:在循环当中,跳出离它最近的一层循环
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!