流程控制:
代码的执行的行为的方式
- 顺序结构:代码的执行顺序,从上到下,从左到右.
- 分支结构:if,if-else,if-else if-else if-else if...else ,switch-case,三元表达式
- 循环结构:while,do-while,for
if语句:
if(条件){
语句(代码块);
}
执行过程:
判断条件是否为true,如果为true则执行大括号中的语句
条件:一般都是一个表达式,或者是一个变量------>结果是布尔类型
if-else语句的语法:
if(条件){
语句1;
}else{
语句2;
}
执行过程:
先判断条件是否成立,如果条件成立,则执行语句1,否则执行语句2
if-else的语句,必然会执行一个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//判断一个数字是奇数还是偶数
//var num=11;
var num = prompt("请输入一个数字");
//当输入一个数字的时候,实际上是字符串类型的,之所以能够计算,是因为浏览器帮助我们做了隐式转换
console.log(typeof num);
if (num % 2 == 0) {
console.log("偶数");
} else {
console.log("奇数");
}
</script>
</head>
<body>
</body>
</html>
输入20
三元表达式:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//三元表达式:由三元运算符连接起来的式子,三元表达式
//三元运算符: ? :
//三元表达式: var 变量名 = 表达式1?表达式2:表达式3
//执行过程: 表达式1是否成立,如果成立,则执行表达式2.否则执行表达式3,最终把结果赋值给变量名即可
//获取两个数字中的最大值
var num1=10;
var num2=20;
var result=num1>num2?num1:num2;
console.log(result);
//扩展:获取三个数字中的最大值
var num4 = 10;
var num5 = 20;
var num6 = 30;
var max=(num1>num2)?(num1>num3?num1:num3):(num2>num3?num2:num3);
console.log(max);
//总结:凡是可以使用if-else的语句,都可以尝试着使用三元表达式
</script>
</head>
<body>
</body>
</html>
switch-case语句:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
/*
* switch-case语句:
*
* 语法:
* switch(表达式){
* case 值1:语句1;break;
* case 值2:语句2;break;
* case 值3:语句3;break;
* case 值4:语句4;break;
* ...
* default:语句;
* }
*
* 执行过程:
* 获取表达式的值,和case后面的 值1 对比,如果匹配,则执行语句1;遇到break,则跳出整个结构,
* 如果和值1不匹配,则和值2对比,如果匹配则执行语句2,遇到break则跳出整个结构,否则和值3对比,匹配则执行语句3,遇到break,则跳出整个结构,否则和值4对比,匹配则执行语句4,遇到break,则跳出,如果和case后面的值都匹配不成功,则执行default后面的语句
*
* 注意的问题:
* switch-case中匹配值的时候是按照严格的模式进行匹配的(相当于使用的是===的方式)
* switch-case中的break是可以省略的,但是一旦和case后面的值匹配后,会继续的向下执行,一直到遇到break之后才会跳出当前的整个代码
*
* */
//根据数字值显示对应的星期
var num = prompt("请输入一个星期的数字");
switch (num) {
case "1":
console.log("星期一");
break;
case "2":
console.log("星期二");
break;
case "3":
console.log("星期三");
break;
case "4":
console.log("星期四");
break;
case "5":
console.log("星期五");
break;
case "6":
console.log("星期六");
break;
case "7":
console.log("星期日");
break;
default:
console.log("您输入有误");
}
//根据月份显示天数(不考虑闰年和闰月的问题)
var month = 9;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log("31天");
break;
case 2:
console.log("28天");
break;
case 4:
case 6:
case 9:
case 11:
console.log("30天");
break;
default:
console.log("您输入的月份不存在");
}
</script>
</head>
<body>
</body>
</html>
while循环:
循环的方式:while循环,do-while循环,for循环,for-in循环
while循环,计数器--负责记录循环的次数,到达结束的条件之后,结束循环了
var i=0;//负责记录循环次数的,一般初始值为0
while(循环的条件){
循环体(大括号中的代码叫循环体)
i++;
}
执行过程:
先判断循环条件是否为true,如果为true则执行循环体,执行循环体后,执行i++,然后,直接跳到 :循环的条件的位置,判断是否成立,如果成立则继续循环,继续判断条件,继续循环,继续判断条件,直到条件不成立,跳出循环了. 否则不执行(跳出循环)
do-while循环语法:
var i=0;//计数器
do{
循环体
i++;
}while(条件);
执行过程:
先执行一次循环体,然后判断条件是否成立,如果成立则继续循环,继续判断...
如果条件不成立,则循环体不再执行了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//提示用户请输入您的帐号和密码,如果有一个错误了,则提示用户继续的输入帐号和密码
do {
//提示用户输入帐号
var userName = prompt("请您输入您的帐号");
//提示用户输入密码
var userPwd = prompt("请您输入您的密码");
} while (userName != "admin"||userPwd!="123" );
console.log("登录成功");
</script>
</head>
<body>
</body>
</html>
for循环的语法:
for(表达式1;表达式2;表达式3){
循环体;
}
执行过程:
- 先执行表达式1,然后判断表达式2是否成立,不成立,跳出循环
- 如果表达式2成立,则执行循环体,然后执行表达式3
- 然后再执行表达式2,判断是否成立,不成立则跳出循环
- 如果成立,则继续执行循环体,然后执行表达式3,然后判断表达式2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
document.write("<table border='1'>");
//控制的行数
for(var i=1;i<=9;i++){
document.write("<tr>");
//控制每一行有多少个表达式
for(var j=1;j<=i;j++){
document.write("<td>");
document.write(j+"*"+i+"="+i*j);
document.write("</td>");
}
document.write("</tr>");
}
document.write("</table>");
//页面中弹框:alert()---->有一个确定的提示; prompt()--->输入的提示
//console.log()--->控制台中显示
//页面中显示:document.write();
</script>
</head>
<body>
</body>
</html>
break关键字
在循环中如果遇到了break关键字,则立刻跳出当前所在的循环
continue关键字
在循环中遇到了continue立刻回到循环的条件的位置,继续下一次循环
总结
什么时候使用if语句?
- 只有一个判断的时候使用if语句
什么时候使用if-else语句?
- 有两个分支,并且只有一个结果的时候.
什么时候使用三元表达式?
- 使用if-else语句的时候,都可以使用三元表达式
什么时候使用if-else if-else if-else if语句?
- 多个分支,一般多个分支并且是范围的判断,就使用这个结构
什么时候使用switch-case语句?
- 多个分支,一般是针对多个值的判断使用switch-case语句
什么时候使用while循环?
- 能够使用while循环的几乎都可以使用for循环(不严谨)
- 如果不知道循环次数,此时一般选择使用while循环 while(true){}
什么时候使用do-while循环?
- while循环的特点:先判断.后循环
- do-while循环的特点:最少执行一次循环,然后再判断
什么时候使用for循环?
- 一般知道了循环的次数,可以使用while循环,也可以使用for循环,推荐用for循环
调试:
- 加断点,单行调试(单步调试,F11)
- 加断点,逐过程的调试,F8