03 【流程控制语句】

3.流程控制语句

3.1 基本介绍

 *
 * 流程控制语句
 * 	- JS中的程序是从上到下一行一行执行的
 * 	- 通过流程控制语句可以控制程序执行流程,
 * 		使程序可以根据一定的条件来选择执行
 *  - 语句的分类:
 * 		1.条件判断语句
 * 		2.条件分支语句
 * 		3.循环语句			
 *
 *
 * prompt()可以弹出一个提示框,该提示框中会带有一个文本框,
 * 	用户可以在文本框中输入一段内容,该函数需要一个字符串作为参数,该字符串将会作为提示框的提示文字

 * 用户输入的内容将会作为函数的返回值返回,可以定义一个变量来接收该内容,prompt()函数的返回值是String类型的
 *
//score就是小明的期末成绩
var score = prompt("请输入小明的期末成绩(0-100):");

3.2 if(条件分支语句)

条件判断语句也称为if语句
语法一:

if(条件表达式){  
   语句...  
}  
 执行流程:  
 if语句执行时,会先对条件表达式进行求值判断,  
 如果值为true,则执行if后的语句  
 如果值为false,则不执行  

语法二:

if(条件表达式){  
	语句...  
}else{  
	语句...  
} 
 执行流程:  
	if...else语句执行时,会对条件表达式进行求值判断,  
		如果值为true,则执行if后的语句  
		如果值为false,则执行else后的语句  

语法三:

if(条件表达式){  
	语句...  
}else if(条件表达式){  
	语句...  
}else if(条件表达式){  
	语句...  
}else if(条件表达式){  
	语句...  
}else{  
	语句...  
}	  
 执行流程  
 if...else if...else语句执行时,会自上至下依次对条件表达式进行求值判断,  
    如果判断结果为true,则执行当前if后的语句,执行完成后语句结束。  
    如果判断结果为false,则继续向下判断,直到找到为true的为止。  
    如果所有的条件表达式都是false,则执行else后的语句  
  • 条件语句可以嵌套(最好不要嵌套超过三层)
  • if-elseif-else 语句注意条件的区间(下一级条件的成立是建立在上一级条件不成立的条件下)
  • 可以只有 if 和 else if

3.3 switch(条件分支语句)

switch语句
语法:

switch (变量/表达式) {
    case 常量值/变量/表达式:
        语句;
        break;
    case 常量值/变量/表达式:
        语句;
        break;
    default:
        语句;
}

执行流程:
switch…case…语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较,
如果比较结果为false,则继续向下比较。如果比较结果为true,则从当前case处开始向下执行代码。
如果所有的case判断结果都为false,则从default处开始执行代码。

  • 与其他高级语言不同,在 JS 中 case 后不仅仅只能跟常量值,还可以跟变量和表达式
  • 注意 switch 语句的 “开关” 特性(遇见 break 才跳出 switch,否则直接进入下一个 case),合理运用好 break(例如不加 break 可以实现多条 case 共用同一个语句体)
  • default 语句不是必须的

3.4 while 循环语句

通过循环语句可以反复执行某些语句多次
while循环
语法:

while(条件表达式){  
    语句...  
}  

执行流程:
while语句在执行时,会先对条件表达式进行求值判断,
如果判断结果为false,则终止循环
如果判断结果为true,则执行循环体
循环体执行完毕,继续对条件表达式进行求值判断,依此类推

do…while循环
语法:

do{  
语句...  
}while(条件表达式)  

执行流程
do…while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断,
如果判断判断结果为false,则终止循环。
如果判断结果为true,则继续执行循环体,依此类推

和while的区别:
while:先判断后执行
do…while: 先执行后判断
do…while可以确保循环体至少执行一次。

3.5 for 循环语句

for循环
语法:

for(1初始化表达式 ; 2条件表达式 ; 4更新表达式){  
    3语句...  
}  

执行流程:
首先执行①初始化表达式,初始化一个变量,
然后对②条件表达式进行求值判断,如果为false则终止循环
如果判断结果为true,则执行③循环体
循环体执行完毕,执行④更新表达式,对变量进行更新。
更新表达式执行完毕重复②

for in 循环

for 循环的一个变体是 for ... in 循环,它可以把一个对象的所有属性依次循环出来:

var o = {
    name: "Jerry",
    age: 20,
    city: "Beijing"
};

for (var key in o) {
    console.log(key + ": " + o[key]);
}
/*
"name: Jerry"
"age: 20"
"city: Beijing"
*/

要过滤掉对象继承的属性,用 hasOwnProperty() 来实现:

var o = {
    name: "Jerry",
    age: 20,
    city: "Beijing"
};

for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(key + ": " + o[key]);
    }
}
/*
"name: Jerry"
"age: 20"
"city: Beijing"
*/

由于数组也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in 循环可以直接循环出数组的索引:

var a = ['A', 'B', 'C'];

for (var i in a) {
    console.log(i + ": " + a[i]);
}
/*
0: A
1: B
2: C
*/

请注意,for ... in 对数组的循环得到的索引是 String 而不是 Number

死循环

while(true){  

}  

for(;;){  

}

3.6 break 和 continue

break;:立即终止本层次循环。

continue;:立即跳过本层次循环,提前进入本层次的下一次循环。

3.7 label 表达式

label 是一个标签,可以使用 breakcontinue 使程序跳转到这个标签处执行(执行:breakcontinue),从而改变程序的执行流程。

// 注意:label 不是一个特定的关键字,可以随便取名
label: for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        if (i + j === 6) {
            console.log("j=" + j);
            break label;
        }
    }
    console.log("i=" + i);
}
/*
j=6
*/
label: for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        if (i + j === 6) {
            console.log("j=" + j);
            continue label;
        }
    }
    console.log("i=" + i);
}
/*
j=6
j=5
j=4
j=3
j=2
j=1
j=0
i=7
i=8
i=9
*/
// label + break 配合可以用在循环外
label: {
    if (1 > 0) {
        console.log("1");
        break label;
    }
    console.log("2");
}
/*
1
*/

3.8 初识算法

算法:解决方案的准确而完整的描述!

  • 输入
  • 输出
  • 有穷性
  • 确定性
  • 可行性

好的算法还要满足:可读性、健壮性!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DSelegent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值