程序执行结构一共分为三种:
1.顺序结构:是按照由上到下的顺序一行一行地执行程序结构。
2.分支结构:是根据不同的条件判断来决定程序执行走向的结构。
3.循环结构:是根据需要重复的执行相同的程序结构。
1.顺序结构
在代码执行过程中,是从上到下依次执行,按照它们出现的先后顺序来执行操作的。
var day01 = '今天我学习javascript';
var day02 = '明天我学习vue框架';
var day03 = '后天我学习uniapp框架';
//输出结果:今天我学习javascript明天我学习vue框架后天我学习uniapp框架
2.分支结构
1.if 结构,有三种形式
if(条件表达式){
// 如果条件表达式的结果为true,就执行此处的代码,反之跳过
// 如果 if 花括号中只有一句代码,则可以省略不写。
}
if(条件表达式) {
// 如果条件表达式的结果为true,执行此处代码
}else{
// 如果条件表达式的结果为false,执行此处代码
}
if(条件表达式1) {
// 如果条件表达式1的结果为true,执行此处代码
}else if(条件表达式2){
// 如果条件表达式2的结果为true,执行此处代码
}else {
// 当以上条件都不满足时,执行此处代码
}
注意:当if判断时,所有的数据类型都会被隐式转换为布尔类型。如果条件表达式的值为0、-0、null、“”、false、underfined或者NaN时,它的条件表达式的结果均为false。
3.swich-case 多项分支结构
使用场景:有多个确定值需要判断时。
注意:case有穿透效果,需要加上break语句。
alter语句特殊,他会自己阻断程序进程的。
switch(表达式){
case 值1:
语句块1
break//防止穿透现象,遇到break直接跳出整个switch
case 值n:
语句块n
break//防止穿透现象,遇到break直接跳出整个switch
default: //以上case都不满足,执行此处
语句块n+1
}
实战:
1.判断输入一个三位数是否为水仙花数,例如153=1^3+5^3+3^3。
var num = Number(prompt('请输入一个三位数'))
// 取个位:被10除不尽的就是个位
var g = num % 10
// 取十位:先除以10,取整,再对10求余
var s = parseInt(num / 10) % 10
// 取百位:除以100取整
var b = parseInt(num / 100)
if (num === g*g*g + s*s*s + b*b*b) {
console.log(num + '是水仙花数')
} else {
console.log(num + '不是水仙花数')
}
2.判断用户输入的年份是否为闰年
var year = prompt('请输入年份');
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
alert(year + '是闰年');
}else{
alert(year + '是平年');
}
3.设计猜拳游戏
//1代表石头 2代表剪子 3代表布
//设计随机生成数,范围在1-3之间
//Math.random()的范围是[0,1) *3的范围就是[0,3)
var num = parseInt(Math.random()*3) + 1
//在这输出一下,来验证一下范围是否正确
console.log(num)
//使用prompt函数弹出一个提示框,让用户输入数字,然后将输入的信息转为数字类型
var myNum = Number(prompt('输入1-3数字,1为石头,2为剪刀,3为布'))
//先判断一个人的数字是多少,
switch(num){
case 1:
switch(myNum){
case 1:
console.log("平局")
break
case 2:
console.log("输了")
break
case 3:
console.log("输了")
break
}
break
case 2:
switch(myNum){
case 1:
console.log("赢了")
break
case 2:
console.log("平局")
break
case 3:
console.log("输了")
break
}
break
case 3:
switch(myNum){
case 1:
console.log("赢了")
break
case 2:
console.log("赢了")
break
case 3:
console.log("平局")
break
}
break
}
3.循环结构
1.while 循环
意思是当...时候,也就是说当满足条件的时候,我就执行,否则就不执行。
语法:
while(条件语句){
//条件语句为ture,则执行,否则忽略
}
说明:
- 循环变量的初始化:定义循环变量并赋初始值。
- 判断进入循环的条件:当条件判断的结果是 true,进入循环执行程序。条件判断的结果是 false,终止循环,执行循环之后的程序。
- 循环体:每次循环都要执行的程序代码。
- 步长:每次循环,循环变量改变的数值。
// 1. 初始化条件 var num = 0; // 2. 条件判断 while (num < 10,num++) { // 3. 要执行的代码 console.log('当前的 num 的值是 ' + num); // 4. 自身改变 num++ } // 循环执行结束,才会执行之后的程序 console.log( '结束' );
2.for循环(先判断,再执行)
语法:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
说明:
初始化语句:设定循环起始状态
条件判断语句:判断循环是否继续执行。
循环体语句:循环反复在做的事情。
条件控制语句:表示循环中的变化内容。
注意:初始化定义在循环结束后失效,定义的变量等在循环外使用时需要重新定义。
// 冒泡排序
var arr = [3,23,11,54,20,11]
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-1-i;j++){
if(arr[j] > arr[j+1]){
var tmp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = tmp
}
}
}
console.log(arr)
重要:两两相比,外层循环n-1,内层循环n-1-i