流程控制
流程控制语句:
--条件判断语句
--条件分支语句
--循环语句
条件判断语句(if语句)
语法:
if(条件表达式){
语句...
//条件表达式为true则执行这里的语句块
}
注:可以写多个单行if语句,当有多个if语句时,每个if都要执行一遍。
--
语法二:
if(条件表达式){
语句...
//条件表达式为true则执行这里的语句块
}else{
语句...
//条件表达式为false则执行这里的语句块
}
注:这里的if else语句仅选择其中一条路径执行,不会每条都执行。
--
语法三:
if(条件表达式){
语句...
//为true时执行,后面的语句不再执行
//为false时不执行,后面的语句执行
}else if(条件表达式){
语句...
//为true时执行,后面的语句不再执行
//为false时不执行,后面的语句执行
}esle if(条件表达式){
语句...
//为true时执行,后面的语句不再执行
//为false时不执行,后面的语句执行
}else{
语句...
//前面都为false时执行
}
注:if...else if...else语句从上至下执行,遇到第一个为true的条件表达式则不再往下执行其他的if分支语句。
//输入三个数字进行排序,从大到小输出
<script>
var sort1 = parseInt(prompt("请输入第一个待排序的数字:"));
var sort2 = parseInt(prompt("请输入第二个待排序的数字:"));
var sort3 = parseInt(prompt("请输入第三个待排序的数字:"));
if (sort1 >= sort2) {
if (sort2 >= sort3) {
document.getElementById("cout").innerHTML = "从大到小的顺序为:" + sort1 + ">" + sort2 + ">" + sort3;
} else if (sort3 >= sort1) {
document.getElementById("cout").innerHTML = "从大到小的顺序为:" + sort3 + ">" + sort1 + ">" + sort2;
} else {
document.getElementById("cout").innerHTML = "从大到小的顺序为:" + sort1 + ">" + sort3 + ">" + sort2;
}
} else {
if (sort1 >= sort3) {
document.getElementById("cout").innerHTML = "从大到小的顺序为:" + sort2 + ">" + sort1 + ">" + sort3;
}else if(sort3 >= sort2){
document.getElementById("cout").innerHTML = "从大到小的顺序为:" + sort3 + ">" + sort2 + ">" + sort1;
}else{
document.getElementById("cout").innerHTML = "从大到小的顺序为:" + sort2 + ">" + sort3 + ">" + sort1;
}
}
</script>
条件分支语句
语法:
switch(表达式){
case 表达式:
语句...
break;
case 表达式:
语句...
break;
default:
语句...
break;
}
注:switch的表达式与case的表达式===才能匹配,为false继续向下执行,如果case全部为false,则执行default语句。
case具有穿透性,如果不加break跳出分支,那么执行到第一个满足条件的case后,后面的case语句全部被执行一遍。
//输入2018年的月份和日期,判断为2018年的那一天
<script>
var month = parseInt(prompt("请输入月"));
var date = parseInt(prompt("请输入日"));
var sum = 0;
switch(month){
case 12:
sum+=30;
case 11:
sum+=31;
case 10:
sum+=30;
case 9:
sum+=31;
case 8:
sum+=31;
case 7:
sum+=30;
case 6:
sum+=31;
case 5:
sum+=30;
case 4:
sum+=31;
case 3:
sum+=28;
case 2:
sum+=31
case 1:
sum+=date;
}
console.log("该天是2018年的第"+ sum + "天");
</script>
循环语句
循环语句的组成部分:
--初始化表达式
--循环条件表达式
--循环体
--更新表达式
--
for循环语句
语法:
for(①初始化表达式 ; ②循环条件表达式 ; ④更新表达式){
③循环体
}
//判断1000中的三位水仙花数
<script>
var num1;
var num2;
var num3;
for(i=100;i<=999;i++){
num1 = Math.floor(i/100);
num2 = Math.floor(i%100/10);
num3 = Math.floor(i%10);
if(i === num1**3 + num2**3 + num3**3){
console.log(i);
}
}
</script>
--
while循环语句
语法:
①初始化表达式
while(②循环条件表达式){
③循环体
④更新表达式
}
--
do while循环语句
语法:
①初始化表达式
do{
③循环体
④更新表达式
}while(②循环条件表达式)
--
while与do while的区别
while先判断后执行
do while先执行后判断
do while至少执行一次循环体
死循环
语法:
while(true){
}
<script>
var count1 = 0;
var count2 = 0;
while(true){
var b = parseInt(prompt("请输入整数:"));
if(b>0){
count1++;
}else if(b<0){
count2++;
}else{
break;
}
}
document.write(count1,count2);
</script>
--
for(;;){
}
<script>
var count1 = 0;
var count2 = 0;
for (; ;) {
var a = parseInt(prompt("请输入整数:"));
if (a < 0) {
count2++;
} else if (a > 0) {
count1++;
} else {
break;
}
}
document.write(count1, count2);
</script>
嵌套循环案例
//打印*
<script>
/*分析过程
i j k
0 1 4
1 2 3
2 3 2
3 1 4
4 0 5
0 1 4
1 2 3
2 3 2
3 4 1
*/
for (var i = 0; i < 5; i++) {
for (var j = 0; j < (4 - i); j++) {
document.write(" ")
}
for (var k = 0; k < (i + 1); k++) {
document.write("* ")
}
document.write("<br/>")
}
for (i = 0; i < 4; i++) {
for (j = 0; j < (i + 1); j++) {
document.write(" ")
}
for (k = 0; k < (4 - i); k++) {
document.write("* ")
}
document.write("<br/>")
}
</script>
//九九乘法口诀表
<style>
span{
display: inline-block;
width: 80px;
}
</style>
</head>
<body>
</body>
<script>
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
var cj = i*j;{
document.write("<span>"+(j+"*"+i +"="+cj) +"</span>");
}
}
document.write("<br/>")
}
</script>
//输出100以内的质数
<script>
// console.time("damu") //计时
out:
for(var i=2;i<100;i++){
for(var j=2;j<i;j++){
if(i%j === 0){
continue out;
}
}
console.log(i);
}
// console.timeEnd("damu")
</script>