JavaScript循环语句总结

if 语句
大多数循环语句最为常用的一个语句就是if语句, 其语法为:

if (condition) statement1 else statement2;
i =33;

if (i > 25) {
    console.log("Greater than 25");
}
else {
    console.log("Less than or equal 25")
}

最好是使用上述的代码块, 即使是只执行一个语句。

do-while 语句
这个语句是一种后循环语句, 也就是说在对表达式求值之前,循环体内的代码至少会执行一次。

var i = 0;
do {
    i = i + 2;
}
while (i < 10);
console.log(i);

while循环
while语句属于前测试语句 , 也就是说, 在循环体内的代码被执行之前, 就会对出口条件求值, 循环体内的代码有可能永远不会被执行,

在这里插入代码片
var b = 0;
while ( b < 10) {
    b +=2;
}
console.log(b);

for语句
for语句也是一种前测试循环语句, 但它具有在执行循环之前初始化变量和定义循环后要执行的代码的功能,

在这里插入代码片for (initialization; expression; post-loop-expression) statement

var count = 10;
for (var i = 0; i< count; i++) {
    console.log(i);
    // null;
}
console.log(i); // 这个i是循环体内的最终值 。

此外, for语句中的初始化表达式,控制表达式和循环后表达式都是可选的,将这三个表达式省略, 就会创建一个无限循环。
for (;;) { doSomething; }

for-in语句
这是一种精确的迭代语句, 可以用来枚举对象的属性,

for (property in expression) statement
for (var propName in window) {
    document.write(propName);
}
'''

注意, 当循环的属性中有 null, undefined 值时, for - in 语句会抛出错误, 但是ECMAScript对于这种行为,更正了for - in的用法, 对于这种情况 不再抛出错误。而只是不执行循环体, 所以循环之前应该检查一下对象的值是不是null。

label 语句

label: statement
start : for (var i=0;i<count;i++) {
    console.log(i)
}

这个语句中定义的标签可以将来有continue 以及break语句引用。

var num = 0;
for (var i=1; i < 10; i++) {
    if (i % 5 === 0) {  // 全等操作符, 类型不同都不行, 只有值相同才可以。
        break;
    }
    num ++; // 只有 能被5 整除的数 才会跳出循环 使num加一, 如果不能被5 整除, 就不会执行任何操作。
}
console.log("能被5整除的数有: ", num + "个");

以上程序在 i 可以被5整除时break, 并且执行 num++ 操作, 注意 :当if语句中没有break,continue语句时,不管if语句中的操作是否执行, 是否为真, num++始终会执行, 只是说break语句使那些不满足条件的i值跳出了程序, 不会记录循环的次数。

注意:前四次 也就是1 2 3 4 都不会被5整除, 只有5可以, 也就是说当i等于5时退出了循环 ,满足了条件 ,此时num++也不在记录循环的次数, 因为已经停止循环了。

continue语句

var num = 0;
for (var i=1; i < 10; i++) {
    if (i % 5 === 0) {  // 全等操作符, 类型不同都不行, 只有值相同才可以。
        continue;
    }
    num ++;
}
console.log(num);

使用continue语句, 前四个数不满足if语句条件, 为false, num继续增加, 当i= 5时 ,满足条件, 执行continue语句,循环会在num再次递增之前退出, 然后进入下一次循环, 这一次的i值就变为了6, 所以最后的结果是8, 少执行了一次。

break 和continue 联合使用

// 循环嵌套。  主要是break 和 continue的区别在哪里。
var num =0;


outermost:for (var i=0; i<10; i++) {
    for (var j=0; j<10; j++) {
        // console.log(j);
        if (i === 5 && j ===5) {  // 只有当两个条件都为真, 才执行。有一个为假都不执行。
            // break outermost; // break就是两个循环都结束了, 计数不在增加。 完全跳出了循环。  i从1-5 由于未满足i,j都为5的条件 程序会执行num = num + 1,直到满足了条件, 结束循环 不在执行其他任何额外 的操作。
            continue outermost; // continue则会继续执行操作, 当遇到i,j 都为5 的这一个点时———— 退出内部循环, 继续执行外部循环,
            // 也就是说后面的j的6789 ,都没了直接到达外部循环,这时候刚到达外部循环 , i就加了一, 然后继续j开始循环, 一直到结束, 除去跳出了j 的6789,之外, 其他的数却都是包含在内了。
        }
        num ++
    }
}

console.log(num);

此时的结果是95 , 意思是循环到了满足条件的时候, 继续循环, 但是此时循环是从i=6开始, 所以少了5次循环的次数,也就显得合理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值