0
点赞
收藏
分享

微信扫一扫

JavaScript的循环语句


累加器和累乘器

累加器:有时我们在计算时不想知道直接的过程,只想要最终的数值,有一个满足条件的结果就自加1.
注意:
1 累加器变量,必须书写在for外面(以防变量被每次重置为0),初始值设置0.
2 当有满足条件的数值,累加器自加1
3 最终的结果也必须书写在for循环外面。

// 用户输入数字,输出约数的总个数
// 的到用户的输入
var num = parseInt(prompt("请输入数字"));
// 输出总个数
// 累加器必须书写在for外面初始值0
var sum = 0;
// 一一列举所有的可能性
for(var i = 1; i <= num ; i ++) {
if(num % i == 0) {
// i是num的约数,累加器自加1
sum ++;
}
}
//累加器最终结果在for结束输出
console.log(sum);

累乘器:我们不想要中间的过程,想需要得到最终的乘积
1 累乘器变量,必须书写在for外面(以防变量被每次重置为1),初始值设置1.
2 当有满足条件的数值,累加器自乘
3 最终的结果也必须书写在for循环外面。
阶乘:比如4! = 4*3*2*1

// 用户输入数字,输出该数阶乘
// 的到用户的输入
var num = parseInt(prompt("请输入数字"));
// 输出阶乘
// 累乘器必须书写在for循环外面,初始值是1
var cheng = 1;
// 阶乘1-num
for(var i = 1 ; i <= num ; i ++) {
// 阶乘
cheng *= i;
}
// 结果在最终输出
console.log(cheng);

案例:用户输入一个数字,判断这个数是不是质数
质数:除了1和他本身两个约数之外没有其他约数。比如3
合数:除了1和他本身两个约数之外还有其他约数。比如4
1既不是质数也不是合数。

// 的到用户输入
var num = parseInt(prompt("请输入数字"));
// 找约数总个数
// 累加器,变量必须书写在for循环外初始值0
var sum = 0;
// num约数的所有可能性一一列举for循环
for(var i = 1 ; i <= num; i ++) {
// 找约数
if(num % i === 0) {
// i是num的约数
// 总个数
sum ++;
}
}
// 最终sum值在for循环外面输出
// console.log(sum);
// 判断是不是质数
// sum如果是2那么num是质数
if(sum === 2) {
console.log(num + "是质数");
}else {
console.log(num + "不是质数");
}

do while

do while后测试循环语句,先执行循环语句,再进行出口判断,如果条件为真,再次执行循环语句……
如果条件为假,结束循环语句,执行后面的其他js语句
注意:循环变量必须书写在外面,防止被清空。

语法:do {
循环语句;
}while(条件表达式)
// 循环变量必须书写do while语句的外面
var i = 3;
do {
console.log(i);
i += 3;
}while(i < 10);

do while循环语句至少会执行一次。

// do while循环语句至少会执行一次
// 循环变量必须书写在外面
var i = 3;
do {
console.log(i ++);
i += 2;
}while(i > 8)

console.log(i);
/*
i=3,执行循环语句输出i++,输出3,i自加(i = 6);进行出口判断i > 8假结束循环。
执行循环后面的其他js语句
输出i= 6;
*/

while

while语句:前测试循环语句,先判断条件,当条件为真,才执行循环语句
注意:循环变量必须书写在外面,防止被清空。

while(条件表达式) {
循环语句;
}
// 循环变量必须书写在语句的外面
var i = 3;
while(i < 10) {
console.log(i);
i += 3;
}
/*
i=3,i<10真,进入循环语句,输出3,i=6
i=6,i<10真,再次进入循环语句,输出6,i=9
i=9,i<10真,再次进入循环语句,输出9,i=12
i=12,i<10假,结束循环
*/

所有while都可以使用for书写。
举例:

// 改为for语句
for(var i = 3; i < 10 ; i += 3) {
console.log(i);
}
/*
i=3,i<10真,进入循环语句输出3
i=6,i<10真,进入循环语句输出6
i=9,i<10真,进入循环语句输出9
i=12,i<10假,结束循环
*/

while输出语句位置非常重要

// 输出语句位置非常重要
// 循环变量必须书写在语句的外面
var i = 3;
while(i < 10) {
i += 3;
console.log(i);
}
/*
i=3,i<10真,进入循环语句i=6,输出6
i=6,i<10真,进入循环语句i=9,输出9
i=9,i<10真,进入循环语句i=12,输出12
i=12,i<10假,结束循环语句
*/

循环语句

break

break: 中断,表示我们已经找到满足条件的数值,不再需要往下执行,立即结束整个循环。
之前循环语句停止,只有一个可能就是条件为假,立即结束循环。现在还可以通过break 结束循环

// 遍历1-200找到一个能被3整除的数字就可以
for(var i = 1 ; i <= 200 ; i ++) {
// 限制
if(i % 3 == 0) {
// 循环语句执行break立即结束整个循环
break;
}
console.log(i);
}
// for循环后面的语句
console.log("结束");
/*
i=1,i<=200真,执行循环语句,i%3==0假不会执行break,执行输出1
i=2,i<=200真,执行循环语句,i%3==0假不会执行break,执行输出2
i=3,i<=200真,执行循环语句,i%3==0真执行break,遇见break结束循环,把语句的控制全交给for后面的其他js语句
*/

结果:

JavaScript的循环语句_不执行

break作用:循环语句for,while,do while,switch语句中执行break,结束break所在层整个循环语句(swich语句),把语句控制权交给循环语句之后的其他js语句。
如果有嵌套语句,不能结束外层循环。

for(var i = 1; i < 4 ; i ++) {
for(var j = 1; j < 4 ; j ++) {
// 当j==2结束循环
if(j == 2) {
// break只能控制所在层的循环,break只能控制j不能控制i
break;
}
console.log(i,j);
}
}

console.log(i,j);
/*
i=1,i<4真,进入第一层i循环j=1,j<4真进入第二层j循环;if结构体不会执行,输出1,1
j=2,j<4真,j==2,break执行,结束j层的循环,把控制权交给后面的js语句i++
i=2,i<4真,进入i的循环语句;j=1;j<4真进入j循环,不会执行break,输出2,1
j=2,j<4真,进入j循环,执行break结束整个j循环
i=3,(3,1)输出
(3,2)j==2结束循环不会输出(3,2)
i = 4,i<4假,结束i循环,把控制权交给i后面的js语句
(i=4,j=2)

*/

如果break想控制外层循环,可以通过标签绑定。

waiceng: for(var i = 1; i < 4 ; i ++) {
for(var j = 1; j < 4 ; j ++) {
if(j == 2) {
// 通过标签产生绑定break只能控制i不能控制j
// 执行break结束i的循环
break waiceng;
}
console.log(i,j);
}
}
console.log(i,j);
/*
i=1,i<4真,执行i循环语句;j=1,j<4真执行j循环语句j==2为假不会执行break,输出(1,1)
j=2,j<4真执行J循环语句j==2真,执行break waicheng;结束i循环,将控制权交给for循环后面的其他js语句
输出(i=1,j=2)
*/

continue

continue:继续
表示这个结果不是我想要的,赶快进入下一次循环(立即测试一下值)
continue只能结束该次(该值)的循环,不结束整个循环

for(var i = 1; i < 10 ; i += 2) {
// 限制
if(i % 3 == 0) {
continue;
}
console.log(i);
}

/*
i=1,i<10真,执行循环语句;i%3==0为假不执行continue;输出1
i=3,i<10真,执行循环语句;i%3==0为真执行continue结束该值的循环;立即进入下一次测试
i=5,i<10真,执行循环语句,i%3==0为假不执行continue,输出5
i=7,i<10真,执行循环语句;i%3==0为假不执行continue,输出7
i=9,i<10真,执行循环语句;i%3==0为真执行continue结束该值的循环;立即进入下一次测试
i=11,i<10假,结束for循环
*/

continue作用:循环语句for,while,do while,中执行continue,结束continue所在层这次循环语句,立即进入下一个值测试。不是结束整个循环
如果有嵌套语句,不能结束外层循环。

for(var i = 1; i < 4 ; i ++) {
for(var j = 1; j < 4 ; j ++) {
// 限制
if(j == 2) {
// continue只能控制j++,不能控制i
continue;
}
console.log(i,j);
}
}
/*
i=1,j=1,执行j循环语句;j==2为假不执行continue,输出1,1
j=2,执行j循环语句;j==2为真执行continue,结束该次j=2的循环立即进入j++
j=3,执行j循环语句;j==2为假不执行continue,输出1,3
j=4,j<4为假结束j循环
i=2,j=1输出2,1
j=2,执行continue结束该值的循环
j=3,输出2,3
j=4,j<4为假结束j循环
i=3,输出(3,1)(3,3)
i=4,i<4为假结束i循环
*/

continue也可以通过标签控制外层循环。

waiceng: for(var i = 1; i < 4 ; i ++) {
for(var j = 1; j < 4 ; j ++) {
if(j == 2) {
// continue控制的i的循环,不能控制j
continue waiceng;
}
console.log(i,j);
}
}
/*
i=1,i<4真执行i循环;j=1,j<4真执行j循环;j==2为假不执行continue,输出1,1
j=2,j<4真执行j循环;j==2为真,执行continue,结束i=1这次循环
i=2,i<4真,执行i循环;j=1,j<4;执行j循环;j==2为假,输出2,1
j=2,j<4真执行j循环;j==2为真,执行continue结束这次循环i=2
i=3,i<4,输出(3,1)
执行continue结束该值循环i=3,不会输出3,2
i=4,i<4假,结束循环
*/

break,continue可以简化计算机计算过程。
质数:判断2-该数开方数之间有没有其他约数,如果没有那么这个就是质数,如果有不是质数

// 的到用户输入
var num = parseInt(prompt("请输入数字"));
// 判断
// 判断2-开方数之间有没有其他约数,只要找到一个就可以断定这个数不是质数
// 一一列举所有可能2-开方数
for(var i = 2; i <= Math.sqrt(num); i ++) {
// 只要找到一个约数就不是质数
if(num % i == 0) {
// i是Num的约数
console.log(num + "不是质数");
break;
}
}

输出1000以内所有的质数

// 输出1000以内的质数
// 1列举所有的可能性1-1000for
waiceng: for(var i = 2; i<= 1000 ; i ++) {
// 2限制,将质数输出
// i = 12,如果12是质数输出,如果12不是质数跳过
for(var j = 2; j <= Math.sqrt(i); j ++) {
// 判断j是不是i的约数
if(i % j == 0) {
// j是i是约数,i不是质数,不是我们想要,赶快检测i++
continue waiceng; }
}
// 一直没有执行continue,那么这个i是质数
console.log(i);
}
举报

相关推荐

0 条评论