一、循环嵌套
- 循环的嵌套:循环内部嵌套另一个循环
- 常用场景:循环打印一个图形(九九乘法表,三角形,4*5矩形等等)
- 循环嵌套规律:
1.一个循环内包含完整的另一个循环语句。
2.被包含的循环语句叫内循环,包含别的循环的循环语句叫外循环。
3.外循环每执行一次循环,内循环都会完全执行所有循环次数。
4.循环嵌套的总执行次数是外循环次数乘以内循环次数。
5.循环嵌套不要超过3层。
for (var m=1;m<=8;m++){ for (var n=1;n<=2*m-1;n++){ document.write("🔺") } document.write("<br>") }
m=1 第一行 内层循环走了 var n = 1; n <= 1; n++ △ m=2 第一行 内层循环走了 var n = 1; n <= 3; n++ △△△ m=3 第一行 内层循环走了 var n = 1; n <= 5; n++ △△△△△
二、循环控制语句
概念:让循环执行到满足某个条件的情况下,停止循环或者控制循环的执行。
为什么要用循环控制:比如在海量数据库中查询一个 用户信息时,循环遍历所有用户,找到就停止。
或者说在循环遍历所有用户信息的时候,跳过一些不满足的条件(比如:遍历海量用户信息,跳过姓王的)
break 终止循环
- 终止本层循环,不再循环(这里注意:如果有多层循环(内层和外层),只跳出本层循环)
for (var i=1;i<=100;i++){ console.log(i); if(i==5){ break; } }
控制台查看结果:只有1-5 双层循环:终止本层循环for (var i=1;i<=5;i++){ //A层 for (var j=1;j<=5;j++){ //B层 if (j===3){ break; //只中止B层循环 } document.write(i + "---" + j + " ") } document.write("<br>") }
打印结果:
continue 结束本次循环
- 跳过本次循环,继续下一次循环
- 比如:吃五个包子,到第三个的时候,第三个掉地下了,不吃了,跳过第三个,继续吃第四个和第五个
- 跳过本次循环,就可以使用
continue
关键字for (var i = 1; i <= 5; i++) { // 当 i 的值为 3 的时候,执行 {} 里面的代码 // {} 里面有 continue,那么本次循环后面的代码就都不执行了 // 自动算作 i 为 3 的这一次结束了,去继续执行 i = 4 的那次循环了 if (i === 3) { continue } console.log('我吃了一个包子') }
三、函数认识
函数的概念及作用
函数的概念:具有包裹性的最小的功能模块。
函数的作用:
工作中(业务):a.提高开发效率 b.便于维护---->避免牵一发而动全身。
代码角度:提高代码的复用性
封装了一个打印三角形的功能:
function printSjx(){ for(var i=1;i<=5;i++){ for (var j=1;j<=i;j++){ document.write('🔺') } document.write('<br>') } } //调用函数 printSjx();
打印结果:
四、函数定义
1、声明式定义
function 函数名(参数列表){
函数体
}
2、函数表达式
var 函数名= function(参数列表){
函数体
}
分析:
function: 告知编译器该关键字后面的标识符为函数类型
函数名: 标识符命名规则(驼峰命名法)
参数列表:(稍后详细讲解)
函数体{}: 内部的代码会在函数被调用的时候执行
注意:函数定义完毕,需要经过调用才能够执行
计算100-200内数字的和:
function getSum(){ var sum=0; for (var i=100;i<=200;i++){ sum+=i; } console.log(sum) } //调用函数 getSum();
打印结果:
五、函数调用
函数调用的形式:函数名()
六、函数参数(重点)
什么是函数参数:有的时候,我们想根据传入的不同数据得到不同的结果或效果。
函数参数分类:形参和实参
形参:定义函数时的参数
function getSum(x,y){ console.log(x,y) } //形参:定义函数时的参数
实参:调用函数时的参数
getSum(1,100) //实参:调用函数时的参数
注意:函数调用的本质就是将实参一一传递(赋值)给形参,也就是说行参的值是在函数调用的时候由实参决定的
功能A:定义函数,求一个范围内(x-y)能被5整除的数字个数
function getCount(x,y){ var count=0; for (var i=x;i<=y;i++){ if(i%5==0){ count++; } } document.write(count) } getCount(100, 200);//求100到200内所有能被5整除的数字个数 document.write('<br>') getCount(200, 400);//求200到400内所有能被5整除的数字个数 document.write('<br>') getCount(300, 400);//求300到400内所有能被5整除的数字个数 document.write('<br>')
功能B:求任何两个年份之间的平年的个数
function getCount(x,y){ var count=0; for (var i=x;i<=y;i++){ if(!(i%4==0 && i%100!=0 || i%400==0)){ count++; } } document.write(count); } getCount(1990,2040)
七、函数返回值(重难点)
前提说明:在函数的外部访问不到函数内部定义的变量
什么是函数返回值:有的时候我们想让函数的运算结果当成一个值保存起来,我们就可以用return
函数返回值:return有返回的意思,其实就是给函数一个 返回值 和 终断函数两层含义。
特点:带返回值的函数在调用时有两层含义:
1. 执行{}内部的代码
2. 把函数调用当成一个值,该值和return 后的值相等,该值可以直接输出,或者存储成变量,然后输出。
比如:
function getSum() { var x = 10; return x; } console.log(getSum());
举一反三:
定义一个函数,返回数字1到n的和:
定义一个函数,键盘录入一个数字n,获取n的阶乘 :function getSum(n) { var sum=0; for (var i = 1; i <= n; i++) { sum +=i; } return sum } document.write(getSum(+prompt('请输入一个数字')));
function getJc(n) { var jc = 1; for (var i = 1; i <= n; i++) { /* 第一次循环:jc = jc*i = 1*1 = 1 第二次循环:jc = jc*2 = 1*1*2 第三次循环:jc = jc*3 = 1*1*2*3 */ jc *= i; } return jc } // console.log(getJc(10)); // console.log(getJc(5)); // 将输入的值赋值给n(将实参一一传递(赋值)给形参) n = prompt('请输入...') console.log(getJc(+prompt('请输入...')));
其他注意事项:
- 一个函数只能返回一个结果
- return除了有返回的含义,还有终止函数执行的含义,return后的代码将不再执行
- 任何函数都有return,一个函数如果没有写return,实际上默认有一行代码叫return undefined。
打印n行三角形( 一般函数带参数不带返回值)
function printSjx(n){ for(var i= 1;i<=n;i++){ for(var j =1;j<=i;j++){ document.write('&') } document.write('<br>') } } printSjx(5)
终止函数的执行,函数将不再向下进行,跳出函数:
function getSum(){ return 1; //终止函数的执行,下面代码不会在执行 console.log('hehe'); return 2; } console.log(getSum());
function getN(){
return undefined; //隐含的
}
function getN(){} // 任何函数都有return,一个函数如果没有写return,实际上默认有一行代码叫return undefined。 console.log(getN()); //undefined
八、总结
问:什么时候需要带return,什么时候不能带return?
答:当一个函数可以计算一个值时,都是可以带return的。像函数如果是打印一个图形,那么函数肯定不能带return。
目录