控制流程语句
编程的三种基本结构
顺序结构(标准文档流)
从上到下执行的代码就是顺序结构
程序默认就是由上到下顺序执行的
分支结构(if/else三目 switch)
根据不同的情况,执行对应代码
循环结构(for /while /do…while )
循环结构:重复做一件事情
一.分支结构
1.if分支语句
if语法结构:
//第一种结构
if (/* 条件表达式 */) {
// 执行语句
}
//第二种结构
if (/* 条件表达式 */){
// 成立执行语句
} else {
// 否则执行语句
}
//第三种结构
if (/* 条件1 */){
// 成立执行语句
} else if (/* 条件2 */){
// 成立执行语句
} else if (/* 条件3 */){
// 成立执行语句
} else {
// 最后默认执行语句
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>控制流程 分支 if</title>
</head>
<body>
<script>
/*
书写格式
if (表达式) { //表达式切记一定会返回一个布尔值(涉及隐式强转为布尔类型),否则报错
}
*/
var x = 0;
if (x) {
//隐式0转为false
console.log('hahahha');
}
var x = 10;
if (x) {
//隐式10转为true
console.log('hahahha');
}
//我要和张三求婚 如果我兜里的钱大于 10000 求婚成功 如果 小于10000 求婚失败
var money = 10; //我们现在有 10块钱
if...
//如果if条件满足 执行if {} 里的语句
if (money > 10000) {
//不满足条件
console.log('求婚成功!!!'); //并没有执行
}
//if...else
//当条件满足的时候 执行if里的语句 当条件不满足的时候 执行 else里的语句
if (money > 10000) {
//不满足条件
console.log('求婚成功!!!'); //并没有执行
} else {
console.log('求婚失败!!!');
}
//if...elseif...else
//我要和张三求婚 如果钱大于10000 求婚成功 如果 (小于10000 但是 大于5000) 他考虑考虑 如果小于 5000 求婚失败
money = 5010;
if (money > 10000) {
console.log('求婚成功!!!');
} else if (money < 10000 && money > 5000) {
//与5000<money<10000
console.log('考虑考虑!!!');
} else {
console.log('求婚失败!!!');
}
// 3000
if (money > 10000) {
console.log('求婚成功!!!');
} else if (money > 5000) {
console.log('考虑考虑!!!');
} else {
console.log('求婚失败!!!');
}
//张三说 如果你有大钻戒并且有5000以上的money 求婚成功 如果你有大钻戒但是money不足5000 考虑考虑 如果你没有大钻戒 但是你有10000以上money 求婚成功 如果你没有大钻戒 money不足10000 求婚失败
/*
1. 有大钻戒 money>5000 求婚成功
2. 有大钻戒 money<5000 考虑考虑
3. 没有大钻戒 money > 10000 求婚成功
4. 没有大钻戒 money < 10000 求婚失败
成功
1. money > 10000
2. money > 5000 && 有钻戒
考虑考虑
1. 有钻戒 && money < 5000 //大于5000,可以没有钻戒
2. money ===10000; //没有钻戒,但是得有一万
失败
1. 没有钻戒 money < 10000
*/
//张三补充加说: 如果你有正好10000 但是没有钻戒 我也考虑考虑
money = 10000;
var diamondRing = false; //钻戒 有 true 没有 false
//&&优先级是大于||的,如果你分不清,可以各自加括号先圈起来.
if (money > 10000 || (money > 5000 && diamondRing)) {
console.log('求婚成功');
} else if (money === 10000 || (diamondRing && money < 5000) ) {
console.log('考虑考虑');
} else {
console.log('求婚失败');
}
//PS:如果逻辑没写好,结果不对, 则用你写好的语句条件,去和需求一个一个比,看是否冲突 5tm
//四种写法:打分 小明考试 0 - 100 A 100 - 91 B 90 - 81 C 80 - 71 D 70 -61 E <= 60
//第一种:冗余写法,每次都要输出一次结果,但也是最常见的.
var score = 100; // 手动输入的分数
if (score>100 || score < 0) {
console.log("分数输入有误");
} //边界限制 防止小明自己篡改分数为 -10分
if (score <= 100 && score > 90) {
console.log("A");
} else if (score > 80) {
console.log("B");
} else if (score > 70) {
console.log("C");
} else if (score > 60) {
console.log("D");
} else {
console.log("E");
}
//第二种修改:自己写的: (提取预制结果grade变量,分两次if写)
var score = 1000;
var grade = 'E'; //默认预制结果是最低结果"E",即最后都没符合的就会去"E"
if ( score>100 || score < 0 || !isNaN(score)) {
//边界限制 防止小明自己篡改分数为 不合理分数
grade="您输入的分数有误,请重新输入";
}else if (score <= 100 && score > 90) {
grade = 'A';
} else if (score > 80) {
grade = 'B';
} else if (score > 70) {
grade = 'C';
} else if (score > 60) {
grade = 'D';
}
if(score>100 || score < 0 || !isNaN(score)){
console.log(grade);
}else{
console.log("您分数的等级为:"+ grade);
}
//第三种修改:(提取预制结果grade变量,推荐if套if一次性写完)
// 逆向思维,上面是score>100和<0时会怎么样,但是这里是逆向思维,反过来规定0<=score<=100.
var score = 100;
var grade = 'E'; //默认预制结果是最低结果"E",即最后都没符合的就会去"E"
if ( score<=100 || score >= 0 || !isNaN(score)) {
//这里是和第二种最大的区别
if (score <= 100 && score > 90) {
grade = 'A';
} else if (score > 80) {
grade = 'B';
} else if (score > 70) {
grade = 'C';
} else if (score > 60) {
grade = 'D';
}
console.log("您分数的等级为:"+ grade);
} else{
console.log("您输入的分数有误,请重新输入");
}
//第四种:错误bug写法当scroe为非法数时,会输出两次两次的
var score = NaN;
var grade = 'E'; //默认预制结果是最低结果"E",即最后都没符合的就会去"E"
if ( score>100 || score < 0 || isNaN(score)