什么是双重循环
- 一个循环体内又包含另一个完整的循环结构,比如
双重while循环
while(循环调件1){
循环操作1
while(循环条件2){
循环操作2
}
}
双重for循环
for(循环调件1){
循环操作1
for(循环条件2){
循环操作2
}
}
多重循环的使用
注意:
- 各循环可互相嵌套
- 一般不超过三层
- 外层循环变量变化一次,内层循环变量要变化一遍
双重for循环的规律是:外层执行一次,内层执行一遍
for(var i=0;i<3;i++){
document.write('第一层循环'+i+'<br>');
for(var j=0;j<3;j++){
document.write('第二层循环'+j+'<br>');
}
}
结果显示
第一层循环0
第二层循环0
第二层循环1
第二层循环2
第一层循环1
第二层循环0
第二层循环1
第二层循环2
第一层循环2
第二层循环0
第二层循环1
第二层循环2
用for循环写一个三角形
第一层循环控制三角形的行数
for(var i=1;i<=3;i++){
第二层循环控制三角形*号的个数
for(var j=1;j<=i;j++){
document.write('*');
}
document.write('<br>');
}
结果显示
用for循环写一个乘法口诀表
for(let i=1;i<=9;i++){
for(let j=1;j<=i;j++){
if(i*j<10){
document.write(i+"*"+j+"="+ (i*j) +" ");
}else{
document.write(i+"*"+j+"="+ (i*j) +" ");
}
i*j<10?document.write(i+"*"+j+"="+ (i*j) +" "):document.write(i+"*"+j+"="+ (i*j) +" ");
}
document.write('<br>');
}
结果显示
也可以用三元表达式(三目表达式)进行:
写法:
false?console.log(1):console.log(2);
for(let i=1;i<=9;i++){
for(let j=1;j<=i;j++){
i*j<10?document.write(i+"*"+j+"="+ (i*j) +" "):document.write(j+"*"+i+"="+ (i*j) +" ");
}
document.write('<br>');
}
结果同上图乘法口诀表
函数:
写一个函数 执行这个函数,通过里面prompt获取输入的汽车的价格,如果大于10 0000 ,返回适合代步 ,显示在页面, 如果大于20 0000 ,返回太贵了, 显示在页面 。
用小括号 括起来 来表示成一个表达式
匿名自执行函数
let str = (function (){
let price = parseInt(prompt('汽车的价格'));
if(price>200000){
return '太贵了'
}
if(price>100000){
return '适合代步'
}
})()
document.write('<h1>'+str+'</h1>');
递归函数 自己调用自己
Maximum call stack size exceeded 死循环 内存溢出
function fn(){
console.log(1);
fn()
}
fn();
所以需要加判断条件
3包括3 以内的数进行累加
function fn(n){
if(n>=1){
return n + fn(n-1)
/* 3+2+1+0 */
}
必须return 0 否则最后一次 fn(0) 会返回undefined
3+2+1+undefined = NaN (not a number 不是一个数字)
return 0;
}
let num = fn(3);
console.log(num);