流程控制语句
1.基本概念
- 默认情况下,浏览器会按书写从上至下顺序执行程序中的每一行代码,但是这并不能满足我们所有的开发需求
- 为了方便我们控制程序的运行流程,JS提供了顺序结构、选择结构(if/switch)、循环结构(while/for)三种语句
2.if语句
(1).条件判断语句
- 当条件表达式为真的时候就会执行{}中所有的代码, 并且只会执行一次
if(条件表达式){
条件为真时执行语句;
}
let age = 19;
if(age >= 18){
console.log('开网卡');
}
console.log('卖饮料');
// 开网卡 卖饮料
(2).条件分支语句
if(条件表达式){
条件为真时执行语句;
}else{
条件为假时执行语句;
}
if(条件表达式1){
条件1为真时执行语句;
}else if(条件表达式2){
条件为1不满足时执行语句;
}else if(条件表达式3){
条件1,2不满足时执行语句;
}else{
条件1,2,3都不满足时执行语句;
}
(3).注意点
- 对于非布尔类型的数据, 会先转换成布尔类型再判断
if(null){
console.log('a');
}
console.log('b');
// b
- 对于
== /===判断, 将常量写在前面(避免写成赋值=而出错)
let num = 10;
if(5 == num){
console.log('a');
}
- if / else if / else后面的大括号都可以省略, 但是省略之后只有紧随其后的语句受到控制
if(false)
console.log('a');
console.log('b'); // b
- 在JavaScript中分号(;)也是一条语句(空语句)
if(false);
{
console.log('a');
console.log('b');
}
// a b
- if选择结构可以嵌套使用
if(true){
if(false){
console.log('a');
}else{
console.log('b');
}
}else{
if(false){
console.log('c');
}else{
console.log('d');
}
}
- 当if选择结构省略大括号时, else if/else会自动和距离最近没有被使用的if匹配
if(0)
if(1)
console.log('a');
else
console.log('b');
else
if(1)
console.log('c');
else
console.log('d');
// c
在企业开发中, 如果条件满足之后只有一句代码需要执行, 那么就使用三元运算符
在企业开发中, 如果条件满足之后有多句代码需要执行, 那么就使用选择结构
let num = prompt('请输入');
num % 2 === 0 ? alert('yes') : alert('no');
if(num % 2 === 0){
alert('yes');
num = 666;
}else{
alert('no');
num = 123;
}
console.log(num);
3.switch语句
switch(表达式){
case 表达式1:
语句1;
break;
case 表达式2:
语句2;
break;
......
default:
前面所有case都不匹配执行的代码;
break;
}
-
会从上至下的依次判断每一个case是否和()中表达式的结果相等, 如果相等就执行对应case后面的代码, 如果前面所有的case都不匹配, 那么就会执行default后面的代码
-
所有的case和default只有一个会被执行, 并且只会被执行一次
-
注意点:
- case判断的是=== , 而不是 ==
let num = 123; switch (num){ case'123': console.log('字符串123'); break; case 123: console.log('数值123'); beak; default: console.log('other'); break; } // 数值123- ()中可以是常量也可以是变量还可以是表达式
// let num = 123; // switch (num) { // 变量 // switch (123) { // 常量 switch (122 + 1) { // 表达式 case 123: console.log("数值的123"); break; default: console.log("Other"); break; }- case后面可以是常量也可以是变量还可以是表达式
let num = 123; switch (123) { // case 123: // 常量 // case num: // 变量 case 100 + 23: // 变量 console.log("数值的123"); break; default: console.log("Other"); break; }- break的作用是立即结束整个switch语句,在switch语句中一旦case或者default被匹配, 那么其它的case和default都会失效
let num = 1; switch (num) { case 1: console.log("1"); break; case 2: console.log("2"); break; default: console.log("Other"); break; }- default不一定要写在最后,switch中的default无论放到什么位置, 都会等到所有case都不匹配再执行
let num = 7; switch (num) { // default: // console.log("Other"); // break; case 1: console.log("1"); break; default: console.log("Other"); break; case 2: console.log("2"); break; }- 和if/else中的else一样, default也可以省略
let num = 7; switch (num) { case 1: console.log("1"); break; case 2: console.log("2"); break; }
if和switch如何选择
- 在企业开发中如果是对区间进行判断, 那么建议使用 if
- 在企业开发中如果是对几个固定的值的判断, 那么建议使用 switch
- 原则: 能用 if 就用 if
需求: 要求判断一个数是否是大于100的数
let num = 20;
if(num > 100){
alert('大于100的数');
}else{
alert('不大于100的数');
}