认识for循环:循环语句就是执行一些类似的代码,让这些代码的编写变得简化。
在控制台输出1~100:
<script type="text/javascript">
for(var i=1; i<=100; i++){
console.log(i);
}
</script>
补充:i++等价于i=i+1,即i自增1
也就是说
for(var i=1; i<=100; i++)
等价于
for(var i=1; i<=100; i=i+1)
准确遍历for循环:即分析程序的运行、走向。
<script type="text/javascript">
for(var i = 1 ; i < 13 ; i = i + 4){
console.log(i);
}
</script>
控制台输出1,5,9.
遍历以上代码:
程序一运行,将执行var i = 1;这条语句, 所以i的值是1。 然后程序会验证i < 13是否满足,1<13是真,所以执行一次循环体(就是大括号里的语句)。执行完循环体之后,会执行i=i+4这条语句,所以i的值是5。
然后程序会验证i < 13是否满足,5<13是真,所以执行一次循环体(就是大括号里的语句)。执行完循环体之后,会执行i=i+4这条语句,所以i的值是9。
然后程序会验证i < 13是否满足,9<13是真,所以执行一次循环体(就是大括号里面的语句)。执行完循环体之后,会执行i=i+4这条语句,所以i的值是13。
然后再程序会验证i < 13是否满足,13<13是假,所以不执行循环体了,退出循环。
例1:
for(var i=50; i<40;i++){
console.log(i);
}
什么也不输出,因为程序一开始i=50,不满足i<40,所以不会执行。
例2:
for(var i=1; i<10;i=i+3){
i=i+1;
console.log(i);
}
输出2,6,10。因为程序一开始i=1,所以进入循环体,i变为2,输出2。
然后执行i=i+3,所以i等于5,满足i<10,所以进入循环体,i变为6,输出6。
然后执行i=i+3,所以i等于9,满足i<10,所以进入循环体了, i变为10,输出10
然后执行i=i+3,所以i等于13了,不满足i<10,所以不执行循环体。
例3:
for(var i=1; i<=10;i++){
}
console.log(i);
输出11。程序一开始,i等于1,满足i<=10,进入循环体,但是循环体没有语句,不会输出。i++执行。 所以一直当i为10的时候,又执行了一次i++,此时i等于11。不满足i<=10了,退出循环,输出11。
例4:
for(var i=1; i<7;i=i+3){
}
console.log(i);
输出7。
例5:
<script type="text/javascript">
for(var i=1;i<10;i=i+1){
if(i%2==0){
i=i*2;
}
console.log(i);
}
</script>
输出1,4,5,12。
例6:
for(var i=1;i>0;i=i+1){
console.log(i);
}
一个死循环。
例7:
var i=3;
for(; i<10; i++){
console.log(i);
}
循环灵活,输出3,4,5,6,7,8,9。
例8:
for(var i=3; i<20; i=i+2){
if(i%3==2){
i=i+1;
}else{
i=i+2;
}
console.log(i);
}
输出的是5,9,12,15,18。
例9:找出1~1000中所有能被5整除,或者被6整除的数字,在控制台输出。
for(var i=1; i<=1000; i=i+1){
if(i%5==0 || i%6==0){
console.log(i);
}
}
例10:
用户输入一个数字,列出所有它能够整除的数字,比如用户输入48,那么控制台中将显示1,2,3,4,6,8,12,16,24,48。用户输入19,控制台中将显示1,19。用户输入21,控制台中将显示1,3,7,21。
<script type="text/javascript">
var num=parseInt(prompt("请输入一个数字"));
for(var i=1; i<=num;i++){
if(num %i==0){
console.log(i);
}
}
</script>
例11:
轮流报数,如果报到能被7整除的数字,或者尾数是7的数字,就算踩地雷了,请在控制台输出1~60之间所有的“安全数”。比如1、2、3、4、5、6、8、9、10、11、12、13、15、16、18……
for(var i=1;i<=60;i++){
//这个数字不能被7整除,且这个数字的个位数不能是7
if(i%7!=0 && i%10!=7)
console.log(i);
}
例12:
水仙花数是一种特殊的三位数,它的特点就是每个数位的立方和等于它本身,比如153就是水仙花数,因为
<script type="text/javascript">
//穷举100~999
for(var i=100;i<=999;i++){
//得到这个i的每一个位
var baiwei=parseInt(i/100);
var shiwei=parseInt(i%100/10);
var gewei=i%10;
//验证是否符合水仙花数
var a=Math.pow(baiwei,3);
var b=Math.pow(shiwei,3);
var c=Math.pow(gewei,3);
if(a+b+c==i){
console.log(i);
}
}
</script>
例13:求1~100的和
var sum=0; //累加器
//遍历1~100,将所有数字放到累加器里
for(var i=1;i<=100;i++){
sum=sum+i;
}
console.log(sum);
所有的变量都要声明,sum不能在for里直接声明
例14:用循环语句求阶乘,比如,13的阶乘是?
var result=1;
for(var i=1;i<=13;i++){
result=result*i;
}
console.log(result);
例15:用户输入一个数,输出因数的个数。比如用户输入48,此时有1、2、3、4、6、8、12、16、24、48,共10个数字。用户输入21,此时有1、3、7、21共4个数字。
//用户输入一个数字
var num = parseInt(prompt("请输入数字"));
// 找因数
// 比如用户输入48,要从1~48,分别让48除以这个数
// 穷举法
var amount = 0; //个数,累加器
for(var i = 1 ; i <= num ; i++){
if(num % i == 0){
// console.log(i); //不想输出
amount++; //自增1
}
}
//循环语句结束之后,总量就已经产生了,弹出结果:
alert(amount);
例16:判断质数。
质数就是只能被1和自己整除,即:它的因数个数是2。比如2、3、5、11、13、17、19、23……用户输入一个数字,弹出这个数字是否是质数。
var number=parseInt(prompt("请输入一个数字"));
var amount=0;
for (var i = 1; i <=number; i++) {
if (number%i==0) {
amount++;
}
}
if (amount==2) {
alert("是质数");
}else{
alert("不是质数");
}