流程控制语句-分支语句
流程控制语句的认识,课程代码总结。详细代码保存在github的* Study*仓库上。
GitHub:Bibiboomer,小白一枚!
- 分支语句
- if …else /if…
- switch case
- 扩展
- 循环语句
- for
- while / do while
- 扩展
分支语句
if…else…
if (condition){ //condition
statement1
[else
statement2]重点内容:(boolean原始类型与Boolenan引用类型)
链接(补充):boolean与Boolean的区别1.其中 条件condition 与boolean的值得T/F无关;与Boolen对象的T/F无关。
2.定义 A所有不是undefined、null、0、NaN、空字符串(“”),以及任意对象,包括值为false的Boolen对象,在条件语句中都为true。代码示例
var b = new Boolean(false);
if (b) //表达式的值是ture
switch case
: *简化if..else..的代码
- 很少用,基本能用if..else..替代
- 用于需要将变量与不同值比较,区分情况
- 进行相同判断是,需要将类型也一同考虑
- 需要break 跳出,负责无条件执行下面的语句,所以一般是每个case块都有break结束。
扩展
除了使用 if..else../if 和 switch 之外,还可以使用三元运算符和短路写法
三元运算符: 条件 ? val1 : val2
1:赋值的时候,根据条件只有两个值时,可以选择使用;
2:条件 = true 赋值 = val1 / 条件 = faluse 赋值 = val2;
console。log(true ? 3:8) //输出3
短路写法
循环语句
for
-
for-in:日后
-
*先判断再执行,反复执行直到符合特定的条件;让
循环变量
依次取不同的值,反复执行同一些语句。
for循环其实不难,理解其核心,【穷举思想】
难点 :结合break 和 continue 优化算法
break: 循环语句遇上该关键字,这个循环就会结束,不再进行其他迭代
for( var i = 1 ;i < 100;i++){
//1,2,3,4,5
consolo.log(i);
if( i == 5){
break // 找到了,就立刻停止循环
continue: 循环遇上该语句,会立刻终止执行后面的语句,然后进入下一次的迭代。
for( var i = 1;i<5; i++){
//1,2,4,5
if( i ==3){
continue;
}
console.log(i) // 找到了 3不输出,直接i=4
扩展
break与continue的相同点与区别
相同点
- 只能终端当前最内层的for,外层for要加label
- 即使加了babel,原来的功能仍然不变,以代码示例
不同点
- 循环遇上break就会终止循环,而continue是停止此次循环,继续从循环的顶部即最靠近它的一个循环体 开始执行。
*continue结合babel
代码示例1:使用babel
不仅跳过内层此次 j=2,停止执行后面的语句,开始迭代以一个j=3;但是同时,也跳过外层此次i = 2,停止后面的语句,开始执行外层下一次的循环i=3。
代码示例2:正常嵌套
仅跳过内层j = 2,停止执行后面的语句,开始下一次循环j =3;不跳过外层此次的循环i = 2,开始执行外层下一次的循环。
*break结合babel
代码示例1:使用babel
使用babel:不仅立即跳出j = 2这个内部循环体;同时也立即跳出外层i=3的循环体。
代码示例2:正常嵌套
仅立即跳出j = 2这个内部循环体;外层i=3的循环体继续。
while /do …while
do while : 后置验证语句:永远都会先执行一次
do{语句
}while(条件表达式)程序一开始就会执行语句,然后验证条件,真,就继续执行语句
while : 前置验证语句:先判断
- `while(falese){
- console.log(“haha”)
- } //不输出`
总结:
1: while和do while经常容易拿来用在没有循环变量的情况,经常做死循环,要是想跳出循环,需要break;
2 : while与 do while 区别不大,一个前置验证语句,一个先判断再执行
3 : for 的功能比它们俩强
扩展
- 随机数:Math.random();
定义变量n : 随机产生一个范围[ i ,j +i) 的数
var n = parseInt(Math.random()*j)+i;`
* Mytask *
-
流程控制语句
-
定义 D
定义D内容