zoukankan      html  css  js  c++  java
  • JavaScript入门-流程控制和break、continue关键字

    JavaScript-流程控制

    流程控制分为:条件选择,循环控制

    条件选择

    if、else

        //1.     if
        if(条件){
            执行语句
        }
    
        //2.    if...else
        if(条件){
            执行语句1
        }else{
            执行语句2
        }
    
        //3.    if...else if...else
        if(条件1){
            执行语句1
        }else if(条件2){
            执行语句2
        }else{
            执行语句3
        }
    

    ps:以上就是if...else组成的三种条件选择,在以后的使用中会非常的频繁,也是编程中最重要的语法,具体采用哪一种看自己爱好

    switch语句

        switch(值){
            case 值1:
                执行语句
                break;
            case 值2:
                执行语句
                break;
            case 值3:
                执行语句
                break;
            default:
                执行语句
        }
    

    ps:switch 语句不像if判断那样把条件写在圆括号()里面,而是把多个条件写在case后面,满足case后面的值,就执行,直到break就跳出switch语句。
    需要注意的是:case可以多个并行在一起,比如这样

        switch(值){
            case 1:
            case 2:
            case 3:
                console.log('a');
                break;
            case 4:
                console.log('b');
        }
        也就是说,switch里面的值如果是1,2,3中的某一个,都会执行打印'a'的语句,因为他们的结束条件就是遇到break;
    

    循环控制

    while循环

        //1.    while
        while(条件){
            循环体
        }
    
        //2.    do...while
        do{
            循环体
        }while(条件);
    

    区别:while需要满足循环条件才会执行,do...while无论是否满足条件,他都会先执行一次,然后再判断循环条件。
    ps:在写循环体时,尽可能要有退出循环的条件,或者return,break关键字,否则就是一个死循环。

    for循环

        //1.    普通for循环
        for(初始值;循环条件;改变条件){
            循环体
        }
        面试题:如何用for写一个最高效的死循环?
            很简单,直接:for(;;){}
    
        //2.    for...in
        以一个arr数组为例
        var arr = [3,3,4,5,7,89,0,-10];
        for(var index in arr){
            console.log(arr[index],typeof index)
        }
        这里的index是数组的下标,从0开始,但是这个index的值类型不是number,而是string。
        这就很奇怪,但是使用的时候,比如arr[index]却不会报错。所以就也不用自己手动去转了。
    
        //3.     for...of
        还是上面数组为例
        for(var value of arr){
            console.log(value)
        }
        这里的value就是arr的值了,从第一个值开始到最后遍历
    

    注意:
    1.这三个for循环效率都一样,使用看个人爱好。
    2.按道理来说,使用for...in时候,我们应该用const(定义常量)来定义下标,因为下标是不能够改的。for...of也应如此。

    break 和 continue关键字

        //break
        //外层循环
        for(const i in arr1){
            //内层循环
            for(const j ipann arr2){
                if(arr[i] === arr[j]){
                    break;
                }
            }
        }
        上面的if条件成立,则执行break语句,跳出循环。但是break不会结束整个循环,而是结束内层的循环,没法结束外层的循环。
    
        //continue
        //外层循环
        for(const i in arr1){
            //内层循环
            for(const j in arr2){
                if(arr[i] === arr[j]){
                    continue;
                }
            }
        }
        上面的if条件成立,执行continue语句,那么continue后面的语句都不会执行,结束了
        当前的这一次(注意是这一次)循环,还是会继续下一次的循环。此时它应该还是内层循环着。
    

    面试会问break和continue的比较?

    1. break和continue都可以作用于循环语句,但是break还可以在switch里
    2. break结束离他最近的一个循环
    3. continue结束的是离他最近的本次循环
  • 相关阅读:
    [转载]RTSP in Stagefright
    FFMPEG for WMA Build Script
    Merge AACExtractor from ICS to Froyo
    查看部署在Heroku上的项目信息
    About AudioSystem Mute
    C++标准转换运算符reinterpret_cast
    纯CSS动态效果的画廊
    基于正则表达式匹配的C++语法高亮度显示
    C++标准转换运算符static_cast
    C++标准转换运算符const_cast
  • 原文地址:https://www.cnblogs.com/lovelyk/p/14260279.html
Copyright © 2011-2022 走看看