• js之语句(条件语句,循环语句,跳转语句)


     一、条件语句 

      1、if语句 

        条件语句是通过判断指定表达式的值来决定执行还是跳过某些语句,这些语句是代码的“决策点”有时称之为“分支”。

        if语句是一种基本的控制语句,它让Javascript程序可以选择执行路径,更准备的说,就是有条件的执行语句。

        if语句的条件必须放在if后面的圆括号内,条件的求值结果永远是一个布尔值它是必须的。花括号中的语句不管是有多少条,只有在条件为true时才会执行。花括号不为必须,如果花括号内只有一条语句,可以省略,但为了提高代码的可读性,所以不建议省略。

        a. if语句:它是最简单的条件语句;

        b. if...else语句:

          if语句的第二种形式引入了else从句,当expression的值是false时,执行statement2;

          当在if/else语句中嵌套使用if语句时,要注意确保else语句匹配正确的if语句。javascript中if/else的匹配规则是:else总是和就近的if语句进行匹配 

        c. else...if语句:

          当代码有多条分支的时候用到这个语句,它并不是真正的javascript语句,它是多条if...else...语句连在一起时的一种写法

    <script>
            //1、如果  只有一种情况要处理
            if (expression) {
                statement;
            }
    
            //2、否则 有两种情况要处理
            if (expression) {
                statement1;
            } else {
                statement2;
            }
    
            //3、否则如果 有多种情况要处理
            if (expression) {
                statement1;
            } else if (expression2) {
                statement2;
            } else if (expression3) {
                statement3;
            } else {
                statement4;
            }
    
            //4、和上面的3同等
            if (expression) {
                statement1
            } else {
                if (expression2) {
                    statement2;
                } else {
                    if (expression3) {
                        statement3;
                    } else {
                        statement4;
                    }
                }
            }
    
        </script>

      例子:点击按钮时让div在显示于隐藏之间来回切换

    <!DOCTYPE html>
    <head>
        <title>Document</title>
        <style>
            div {height: 200px;width: 200px;background-color: red; display: -none;}
        </style>
    </head>
    <body>
        <input type="button" id="btn" value="按钮">
        <div id="box"></div>
        <script>
            let btn = document.getElementById('btn');
            let box = document.getElementById('box');
            // style它操作的是行间样式
            let on = 'block';
            btn.onclick = function () {
                if (on == 'none') {
                    box.style.display = 'block';
                    on = 'block';
                } else {
                    box.style.display = 'none';
                    on = 'none';
                }
            }
        </script>
    </body>
    </html>

      案例:点击按钮,让图片切换

    <!DOCTYPE html>
    <head>
        <title>Document</title>
    </head>
    <body>
        <script>
            window.onload=function(){
                let prev=document.getElementById('prev');
                let next=document.getElementById('next');
                let pic=document.getElementById('pic');
                let imgArr=['A','B','C','D'];
                let n=0;
                next.onclick=function(){
                    n++;
                    if(n>imgArr.length-1){  //数组的length属性
                        n=0;
                    }
                     // 字符串的拼接
                    pic.src="images/"+imgArr[n]+".jpg";
                }
    
                prev.onclick=function(){
                    n--;
                    if(n<0){
                        n=imgArr.length-1;
                    }
                    pic.src="images/"+imgArr[n]+".jpg";
                }
            }
        </script>
        <input type="button" id="prev" value="上一张">
        <input type="button" id="next" value="下一张">
        <img src="images/A.jpg"  id='pic' style="display: block;">
    </body>
    </html>

      2、switch语句

        当所有的分支都依赖于同一个表达式的值时,可以用到switch语句。

        switch语句执行一个多路分支,首先计算expression的值,然后进行查找case子句的表达式是否和expression的值相同。如找到匹配的cse,那么将执行这个case相对应的代码块,如果找不到匹配的case,那它将会执行default标签中的代码块,如果没有default标签,switch语句将跳过它的所有代码块。

        每一个case语句块的结尾要使用关键字break或者是return,不然switch语句就会从与expression的值相匹配的case标签处的代码块开始执行,依次执行后续的语句,一直到整个switch代码块结束。(不会跳出switch语句)

        在switch语句中使用任何数据类型,且每个case的值不一定是常量,可以是变量或表达式。

        在使用switch语句中,要注意以下向点:

        a.由于每次执行switch语句时,并不是所有的case表达式都能够执行到,所以要避免使用带有副作用的case表达式,最安全的做法是在case表达式中使用常量表达式。

        b.default标签一般出现在末尾(特殊情况也可以在switch语句中的任何位置)

        c.switch语句中,对每个case的匹配操作实际上是“===”恒等运算符比较而不是“==”相等运算符比较,因此表达式和case的匹配不会做任何类型转换

    <script>
        switch (expression) {
            case value1:
                //当expression与value1相同时,才会走这里的代码
                statement1;
                //停止以下代码继续执行
                break;
            case value2:
                //当expression与value2相同时,才会走这里的代码
                statement2;
                //停止以下代码继续执行
                break;
            case value3:
                //当expression与value3相同时,才会走这里的代码
                statement3;
                //停止以下代码继续执行
                break;
            default: statement4;
        }
    </script>

      二、循环语句

        javascript有4种循环语句:while、do...while、for、for...in.只要给定条件仍能得到满足,包含在循环语句里的代码就将重复地执行下去。一旦给定条件的求值结果不再是true,循环也就到此为止。其中最常用的循环就是对数组元素的遍历.

        1、while语句

        while语句属于前测试循环语句,在循环体内的代码被执行之前,就会对条件进行判断。

        当表达式expression为true时则循环执行statement,直到expression的值为false为止;如果是false,那么程序将跳过循环。

        注意:当while条件不具备停止条件的时候,一定要在循环体内给一个条件变化,否则就是一个死循环

        while和for的区别:while循环是一个条件循环,它一般用在有嵌套的元素或者是有嵌套的数据。要做循环的时候首先考虑的是for,如果for做不出来那就用while。

        <script>
            /*while (expression) {
                statement;
            }
    
            let n = 0;
            while (n <= 10) {
                console.log(n);
                n++;
            }*/
            
            window.onload = function () {
                let box = document.getElementById('box');
                while (box.children.length != 0) {
                    box = box.children[0];
                }
                console.log(box)
            }
        </script>
        <div id="box">
            <ul>
                <li>
                    <p>
                        <a href="#">测试文字</a>
                    </p>
                </li>
            </ul>
        </div>

      2、do...while循环

        do while语句是后测试循环,条件在执行循环内部的代码之后计算。这意味着在计算表达式之前,至少会执行循环主体一次。

        do...while循环和普通的while循环有以下的不同

        a.do...while循环要求必须使用关键字do来标识循环的开始,用while来标识循环的结尾并进入判断

        b.do...while循环用分号结尾

        <script>
            function printArray(a) {
                let len = a.length, i = 0;
                if (len == 0) {
                    console.log('empty');
                } else {
                    do {
                        console.log(a[i]);
                    } while (++i < len);
                }
            }
        </script>

      3、for语句

        for语句提供一个比while语句更加方便的循环控制结构,用for循环来重复执行一些代码的好处是循环结构更加清晰。

        大部分的for都具有特定的计数器变量,计算器的三个关键操作是:条件初始化,条件判断,条件变化。for语句将这三步明确为循环语法的一部分,各自使用一个表达式来表示。

        在for循环的变量初始化表达式中,也可 以不使用var关键字,变量的初始化可以在外部执行

        由于ECMAScript中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到。

        for循环常见用途是对某个数组里的全部元素进行遍历处理。如果循环中的一次迭代会改变多个变量,需要用逗号运算符,它将初始化表达式和自增表达式合并入一个表达式中以用于for循环。

        for嵌套:有嵌套的循环,如果里面的循环没有走完,外面的循环步骤是不会走的。需要注意的是:里面的变量不要与外面的变量相同,如果相同的话,里面的变量会把外面的变量给覆盖掉。

      示例:点击某个li,让点击的那个li背景变成红色

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <!--  for(条件初始化;条件判断,条件变化){
                当条件判断成立的时候,会重复执行这里的代码
              }
            步骤:
             1、条件初始化
             2、条件判断
             3、当条件成立的时候,走花括号里的代码
             4、条件变化
             从第二次开始,就不走1了,重复2,3,4 -->
        <script>
            window.onload = function () {
                let lis = document.querySelectorAll('li');
                for (let i = 0; i < lis.length; i++) {
                    lis[i].onclick = function () {
                        //在循环的时候,给每个元素都添加了点击事件,想要在点击事件里找到点击的那个对象,不能用i的值作为下标去取,要用this,this就是点击的那个对象
                        this.style.background = 'red';
                    }
                }
            }
        </script>
        <li>pink</li>
        <li>green</li>
        <li>yellow</li>
        <li>white</li>
        <li>blue</li>
    </body>
    </html>

      示例:选项卡

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>html&css部分</title>
        <style>
            div {
                width: 200px; height: 200px;border: 1px dotted #f00;display: none;}
        </style> 
    </head>
    <body>
        <input type="button" value="选项一" style="background:red;" />
        <input type="button" value="选项二" />
        <input type="button" value="选项三" />
        <div style="display:block;">内容一</div>
        <div>内容二</div>
        <div>内容三</div>
    </body>
    </html>

      javascript部分(方法一)

    <script>  
         //  需求:点击按钮显示对应的div,让其它的按钮背景颜色去掉,让其它的div隐藏    
        window.onload = function () {
            let inputs = document.querySelectorAll('input');
            let divs = document.querySelectorAll('div');
            for (var i = 0; i < inputs.length; i++) {
                inputs[i].index = i;
                inputs[i].onclick = function () {
                    //点击的时候把背景颜色清空,所有的div隐藏,
                    //因为操作的是一组元素所以有for循环
                    for (var i = 0; i < inputs.length; i++) {
                        inputs[i].style.background = '';
                        divs[i].style.display = 'none';
                    }
                    //给当前的按钮添加背景颜色,让对应的div显示
                    this.style.background = 'red';
                    divs[this.index].style.display = 'block';
                }
            }
        }
    </script>

      javascript部分(方法二)

    <script>
        // 关键点:如何找到上一个点击的input
        window.onload = function () {
            var inputs = document.querySelectorAll('input');
            var divs = document.querySelectorAll('div');
            var last = inputs[0];//这个变量存的是上一次点击的对象,一上来默认为第0个
            for (var i = 0; i < inputs.length; i++) {          
                inputs[i].index = i;//给每个按钮添加一个自定义属性,存的是它们对应的索引值        
                inputs[i].onclick = function () {
                    //把上一次点击对象的背景颜色去掉
                    last.style.background = '';
                    //把上一个对应的div让它隐藏
                    divs[last.index].style.display = 'none';
                    //给当前点击的那个按钮添加背景颜色
                    this.style.background = 'red';
                    //让当前点击的按钮对应的div让它显示
                    divs[this.index].style.display = 'block';
                    last = this;//把上一次点击的对象更新成当前点击的对象
                }
            }
        }
    </script>

      4、for...in语句

        for...in语句也使用了for关键字,但它和for完全不一样。它可以用来更方便的遍历对象属性成员。

        variable 通常是一个变量名,也可以是一个可以产生左值的表达式或者是一个通过var语句声明的变量,总之必须是一个适用于赋值表达式左侧的值。object是一个表达式,这个表达式的计算结果是一个对象,同样,statement是一个语句或者是语句块,它是循环的主体。

        需要注意的是,只要for...in循环中的vaiable的值可以当做赋值表达式的左值,它可以是任意的表达式,每次循环都会计算这个表达式,也就是说每次循环它计算的值有可能不同。

        其它for...in循环不会遍历对象的所有属性,只有可枚举的属性才会遍历到。

        <script>
            /*for(var 变量名 in 对象){
                变量名          对象城的属性名(key)
                对象[属性名]    属性名对应的值
            }
           /要取到一个对象里的所有数据,用到for...in更加的快速方便
           for (variable in object) {
               statement;*/
    
            let person = {
                name: '老王',
                age: 20,
                height: '180cm',
                weight: '60kg'
            }
            for (var attr in person) {
                console.log(attr, person[attr]);
            }
        </script>

     三、跳转语句

        跳转语句要以让解释器跳转到程序的其它部分继续执行。分别为:break,return,continue.

       1、break语句

        单独break语句的作用是退出最内层的循环,停止循环下面的循环就不会走了,break后面的代码是不会执行的。它只有出现在循环语句或者是switch语句中才算是合法,出现在其他的语句中会报错。

      注意:break它的控制权都无法越过函数的边界。只能在函数内部使用。

        <script>
            {
                for (var i = 0; i < 5; i++) {
                    if (i == 3) {
                        break;
                        // continue;
                    }
                    console.log(i);
                }
            }    
        </script> 

      2、return

        函数中的return语句就是指定函数调用后的返回值。让函数停止执行,它只能用在函数内。不然会报错。当执行到return语句时,函数终止执行,并返回expression的值给调用程序。

        如果没有return语句,则函数调用仅仅依次执行函数体内的每一条语句直到函数结束,最后返回调用程序。这种情况下,调用表达式的结果是undefined。return语句经常作为函数内的最后一条语句出现,但并不是说一定要放在函数最后,即使在执行return语句的时候还有很多后续代码没有执行到,这时函数也还是会返回调用程序。

        <script>
            function square(x) {
                return x * x
            };
            square(2);
        </script>

      3、continue

        停止循环,停止的是当次的循环,后面的循环还是会继续的。

        当执行到continue语句时,当前的循环逻辑就终止了,随即执行下一次循环。但在不同类型的循环中,continue行为也有所不同:

        a.while循环中,循环开始处指定的expression会重复检测,如果检测结果为true,则循环体会从头开始执行

        b.do while循环中,程序执行直接跳到循环结尾处,这时会重新判断循环条件,之后才会继续下一次循环

        c.for循环中,首先计算自增表达式,然后再次检测test表达式,用以判断是否执行循环体

        d.在for/in循环中,循环开始遍历下一个属性名,这个属性名赋给了指定的变量.

     

     

  • 相关阅读:
    2. Add Two Numbers
    8. String to Integer (atoi)
    18. 4Sum
    15. 3Sum
    1. Two Sum
    227. Basic Calculator
    7. Reverse Integer
    PostMessage和SendMessage的区别
    Date Time Picker控件
    git 设置和取消代理
  • 原文地址:https://www.cnblogs.com/davina123/p/11833301.html
Copyright © 2020-2023  润新知