默认情况下,代码是从上到下执行的
代码的执行会根据实际情况进行选择性执行
控制执行流程的
条件判断boolean类型,true 和false
基础语法:
(1)
if(变量或者表达式){
语句1;
}
当变量或者表达式的结果是true(不是六个假值)的时候,执行语句1;
(2)
if(变量或者表达式){
语句1;
}else{
语句2;
}
当变量或者表达式的结果是true的时候,执行语句1;
否则执行语句2
6个假值:
0 NaN false null undefined ""
(3)
if(变量或者表达式1){
语句1;
}else if(变量或者表达式2){
语句2;
}...{
}else{
}
当变量和表达式1的值不为6个假值的时候,执行语句1;
否则,判断变量和表达式2的值 ,如果不为6个假值执行语句2
否则执行else
注意:
else if 和else都不是必须的
小例子
身高大于170小于180的可以报名参赛否则不满足条件
var height=prompt("请输入你的身高");
if (height>170 && height<180) {
//满足条件的时候要执行的js语句
alert("恭喜你!!!");
console.log("可以报名参赛");
}else{
console.log("身高不满足条件")
}
var num="";
if (num) {
console.log(num);
}else{
console.log("num等于假值了")
}
// 当flag为什么值的时候可以弹出"ok":flag不为6个假值的
/*if(flag){
alert("ok");
}*/
小例子
当score>90的时候 A
score>80 B
>60 C
<60 D
var score=prompt("请输入分数");
if (score>90) {
alert("你的等级是A");
}else if(score>80){
alert("你的等级是B");
}else if(score>60){
alert("你的等级是C");
}else{
alert("你的等级是D");
}
switch语句switch:开关语句
条件语句
语法:
switch(变量或者表达式){
case 值1:
语句1;
case 值2:
语句2;
....
case 值n:
语句n;
}
当变量或者表达式的值等于值1则执行语句1
break:跳出switch语句,防止下面的语句运行
default:所有的值都不满足的时候,执行default
小例子
特价菜:
星期一 "酸辣土豆丝"
2 "西红柿鸡蛋"
3 "红烧肉"
4 "土豆片"
5 "干煸豆角"
6 "锅包肉"
7 "焗南瓜"
var day=18;
switch(day){
case 1:
console.log("酸辣土豆丝1");
break;
case 2:
console.log("酸辣土豆丝2");
break;
case 3:
console.log("酸辣土豆丝3");
break;
case 4:
console.log("酸辣土豆丝4");
break;
case 5:
console.log("酸辣土豆丝5");
break;
case 6:
console.log("酸辣土豆丝6");
break;
case 7:
console.log("酸辣土豆丝7");
break;
default:
console.log("输入错误");
}
循环-for语法:
for(初始值;结束条件;增量){
js语句;
}
执行过程:
(1)执行初始值,并且只执行一次
(2)执行结束条件,如果条件成立,执行js语句
条件不成立,跳出for循环
(3)条件成立,执行js语句,执行增量;执行完增量,开始步骤(2)
小例子
打印1到100
for(var j=1;j<=100;j++){
console.log(j);
}
小例子
打印100以内的奇数
for(var i=1;i<100;i+=2){
console.log(i);
}
第二种方法
for(var m=1;m<100;m++){
if (m%2!=0) {
console.log(m);
}
}
小例子
//添加循环次数的判断
var num1=0;
for(var i=1;i<100;i+=2){
num1++;
console.log(i);
}
console.log("第一个for循环的次数为"+num1);//50
var num2=0;
for(var m=1;m<100;m++){
num2++;
if (m%2!=0) {
console.log(m);
}
}
console.log("第2个for循环的次数为"+num2);//99
小例子
计算1到10的和:
1+2+3+4+5+6+7+8+9+10
var sum=0;
for(var i=1;i<=10;i++){
console.log(i);
//每次将i的值家到sum的身上
sum+=i;//sum=sum+1=1 sum=sum+2=1+2=3 sum=3+3=6
}
console.log(sum);
小作业
求1*2*3*4*5*6*7的积 (7的阶乘)
求100以内的偶数的和
求1*3*9*27*81的积
单循环 双重循环 三层循环
上面我们写的都是单层循环
实现99乘法表
按照之前的思路就是单层循环这样一行一行实现
//第5行
for(var i=1;i<6;i++){
document.write(5+"*"+i+"="+5*i);
document.write(" ")
}
//第6行
document.write("
");
for(var i=1;i<7;i++){
document.write(6+"*"+i+"="+6*i);
document.write(" ")
}
//第7行
document.write("
");
for(var i=1;i<8;i++){
document.write(7+"*"+i+"="+7*i);
document.write(" ")
}
//第八行
document.write("
");
for(var i=1;i<9;i++){
document.write(8+"*"+i+"="+8*i);
document.write(" ")
}
//第九行
document.write("
");
for(var i=1;i<10;i++){
document.write(9+"*"+i+"="+9*i);
document.write(" ")
}
双重循环实现
for(var j=1;j<=9;j++){
var n=j;
for(var i=1;i<n+1;i++){
document.write(n+"*"+i+"="+n*i);
document.write(" ")
}
document.write("
");
}
实现页面展示效果
解析
第一层循环n代表每行,总共9行
第二层循环i代表每行中有几个被乘的数n+1这里为什么屙屎n+1是因为我们在循环中写的是i
如果不是太理解,可以自己尝试一下
for(var i=0;i<3;i++){
for(var j=10;j<15;j++){
//js语句
console.log(j);
}
}
第一轮 i=0
执行内部循环 j=10 ,j<15成立,执行js语句,打印j=10 j++
j=11 11 j++
j=12 12 j++
j=13 13 j++
j=14 14 j++
j=15 j<15不满足条件,退出内部循环 i++
第二轮 i=1;
执行内部循环:
j=10 ,j<15成立,执行js语句,打印j=10 j++
j=11 11 j++
j=12 12 j++
j=13 13 j++
j=14 14 j++
j=15 j<15不满足条件,退出内部循环 i++
第二轮 i=2;
执行内部循环:
j=10 ,j<15成立,执行js语句,打印j=10 j++
j=11 11 j++
j=12 12 j++
j=13 13 j++
j=14 14 j++
j=15 j<15不满足条件,退出内部循环 i++
i=3,退出外层循环,双重for循环结束
内部循环执行结束才会执行外部循环
阶乘(双重循环)
n!=1*2*3*4*5*..*n
5!=1*2*3*4*5
求1!+2!+3!*4!+5!
1+2+6+24+120=153
var sum=0;
for(var i=1;i<=5;i++){
//sum+=i的阶乘
var result=1;
for(var j=1;j<=i;j++){
result*=j;
}
//console.log(result);//result就是i的阶乘
sum+=result;
}
console.log(sum);
阶乘之和(双重循环)
求:1!+2!+3!+4!+5!
分析:
(1)求和运算 1+2+3+4+5 for循环
(2)每一项是阶乘 for循环
5!=1*2*3*4*5
var sum=0;
for(var i=1;i<=5;i++){
console.log(i);
//计算i的阶乘
//阶乘
var n=i;
var result=1;
for(var j=1;j<=n;j++){
console.log(j);
result*=j;//将j累乘到sum上面
}
//for循环执行结束,得到的是n的阶乘
console.log(result);
sum+=result;//将i的值累加到sum上面
}
console.log(sum);//153
分析代码:
第一轮:
j=1 进入内层循环
i=1,i<=j成立 result=1*1=1 sum=0+1=1
第二轮
j=2; 进入内层循环
result=1,
i=1 i<=2 result=1*1 i++
i=2 i<=2 result=1*1*2 i++
i=3 i<=2不成立,退出循环 j++
sum+=1*1*2
第三轮:
j=3;j<=5成立,进入内层循环
result=1,
i=1 i<=3 result=1*1 i++
i=2 i<=3 result=1*1*2 i++
i=3 i<=3 result=1*1*2*3 i++
i=4 i<=3不成立,退出循环 j++
sum+=1*1*2*3
while循环while循环:
while(变量或者表达式){
js语句
}
当变量或者表达式的值为true的时候,执行js语句
当变量或者表达式的值为false的时候,退出while循环
必须有结束条件
do{
js语句
}while(条件)
(1)执行js语句
(2)当变量或者表达式的值为true的时候,执行js语句
当变量或者表达式的值为false的时候,退出while循环
必须有结束条件
区别:
do-while无论条件是否成立,至少执行一次
while循环和for循环没有本质的区别
var i=16;
while(i<15){
console.log(i);
i+=3;
}
for和whilewhile循环更适用于循环次不确定的情况
brock的使用两个关键字:
break和continue
break是跳出for循环,整个for循环结束
continue是跳出本轮循环,继续下一轮的循环
for(var i=0;i<3;i++){
for(var j=0;j<5;j++){
if (j==2) {
break;
}
}
console.log("========="+i);
}
打印结果
for in语句for in语句:
主要是用来访问对象的,因为对象的属性的长度是无法获取的
简单的认识对象
arr.length获取数组的长度
var arr=[10,20,30,40,50];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
//for in获取数组的内容
for(var j in arr){
console.log(j);//下标
console.log(arr[j]);
}
var stu=new Object();//创建了 一个对象
stu.name="森";
stu.age="16";
//可以访问对象的属性
// console.log(stu.name);
//获取所有的属性
console.log(stu.length);
for(var m in stu){
console.log(m);
console.log(stu[m])
}
标签语句looper:for(var i=0;i<5;i++){
console.log(i);
for(var j=0;j<10;j++){
if (j==5) {
break looper;//break的looper的内容,跳出外层的循环
}
}
}
// 标签 start 可以被之后的 break 或 continue 语句引用
排序// 对x,y,z从大到小排序
// 先假设x>y>z
var box;
if (x<y) {
// 交换x和y的位置
box=x;
x=y;
y=box;
}
if(x<z){
box=x;
x=z;
z=box
}
if(y<z){
box=y;
y=z;
z=box
}
console.log(x,y,z)
结束语
记住流程控制的使用,多多练习才可以学习到哦!