循环语句:
通过循环语句可以多次执行一段代码
while循环
语法:
while(条件表达式){
语句...
}
while语句在执行时,先对条件表达式进行求值判断,如果值为true,则执行循环体,循环体执行完毕后,继续对表达式进行判断,以此类推,直到值为false,终止循环。
do...while循环
语法:
do{
语句...
}while(条件表达式)
执行流程:
先执行循环体,再对while后的表达式进行判断,循环体可以保证至少执行一次。
while练习
假如投资年利率5%,试求从1000增长到5000块,需要花费多少年
var p=1000,i=0;
while(p<5000){
i++;
p=p * 1.05;
document.write("第"+ i +"年"+p+ "元"+"
");
}
document.write("一共需要"+i+"年");
for循环
在for循环中,为我们提供了专门的位置放三个表达式
1. 初始化表达式
2. 条件表达式
3. 更新表达式
for循环语法:
for(初始化表达式;条件表达式;更新表达式){
语句...
}
执行流程:
1. 执行初始化表达式(只会执行一次
2. 执行条件表达式,判断是否执行循环
如果为true,则执行循环
如果为false,终止循环
3. 执行更新表达式,再执行条件表达式
例如
for(var i = 0; i < 10 ; i++){
document.write(i + "
");
for循环中的三个部分都可以省略,也可以写在外部
不写任何表达式,只写两个分号,循环是死循环
for练习一
打印1-100之间所有奇数之和
var sum=0;
for(var i=1; i<=100 ; i++){
if(i%2==1){
sum=sum+i;
document.write("i="+i+","+"sum="+sum+"
")
}
for练习二
打印1-100之间所有7的倍数的个数及总和
for(var i = 1 , num = 0, sum=0 ;i<=100;i++){
if(i%7==0){
num++;
sum=sum+i;
document.write(num+","+sum+"
");
}
for练习三
水仙花数:一个三位数,它的每个位上的数字的3次幂之和等于它本身,
打印所有水仙花数
for(var flower=100;flower<1000;flower++){
var bai= parseInt(flower/100);
var shi=parseInt((flower-bai*100)/10);
var ge=flower%10;
var sum= bai*bai*bai+shi*shi*shi+ge*ge*ge;
if(sum==flower){
console.log(flower+"
");
}
for练习四
在页面中接收一个输入数字,判断是否为质数
质数:只能被1和它自身整除的数
var num=prompt("请输入一个大于1的整数:");
var a=true;
if(num<=1){
alert('请输入大于1的整数');
}else{
for(i=2;i
for练习五:嵌套
输出
* * * * *
* * * *
* * *
* *
*
for(var i=0;i<5;i++){
for(var j=0;j<5-i;j++){
document.write("* ");
}
document.write("
");
for练习六:嵌套
打印九九乘法表
for(var i=1;i<9+1;i++){
for(var j=1;j");
for练习七:嵌套
打印1-100所有质数
console.time("test");
for(var num=2; num<=100;num++){
var flag=true;
for(var i=2;i");
}
}console.timeEnd("test");
// 当把var flag=true;放在第一个for外时,程序不能正常运行!
// 原因:flag的值被内层for执行后没有办法恢复为true。
// 优化:可以把内层for循环条件句改为for(var i=2;i<=Math.sqrt(num);i++)
break和 continue
break可以用来退出Switch或循环语句,不能在if语句中使用break和continue
break关键字会立即终止离他最近的循环语句
可以为循环语句创建一个label
label:循环语句
使用break时,可以在break后跟一个label,这样break将会结束指定循环
outer:
for(var i=0;i<5;i++){
console.log("@外层循环"+i)
for(var j=0;j<5;j++){
break outer;
console.log("内层循环:"+j);
}
}
continue 关键字可以用来跳过当次循环,默认只会对离它最近的循环起作用
可以利用break和continue来提高程序性能
测试性能:
在程序执行前,开启计时器
console.time("计时器名字")
可以用来开启一个计时器
它需要一个字符串作为参数,这个字符串将会作为计时器的标识
在程序执行完毕后,设置计时器终点
console.timeEnd("计时器名字")