JavaScript的return程序流

作者: 前端路上的小兵 | 来源:发表于2018-07-03 23:23 被阅读28次
    原文

    博客原文

    大纲

    1、场景分析
    2、代码分析
    3、总结分析

    1、场景分析

    以下有两段代码,这两段代码都可以使用检查输入的字符的大小写的功能,我们可以通过对这两段代码的分析来认识return程序流。

    代码一
    <html>
    <head>
    <script>
    function checkCarType(charToCheck){
        var returnValue = "O";
        var charCode = charToCheck.charCodeAt(0);
        
        if (charCode >= "A".charCodeAt(0) && charCode <= "Z".charCodeAt(0)){
            returnValue = "U";
        }
        else if (charCode >= "a".charCodeAt(0) && charCode <= "z".charCodeAt(0)){
            returnValue = "L";
        }
        else if (charCode >= "0".charCodeAt(0) && charCode <= "9".charCodeAt(0)){
            returnValue = "N";
        }
            return returnValue;
    }
    </script>
    </head>
    
    <body>
    <script>
    
    var myString = prompt("Enter some text " ,"Hello World");
    switch (checkCarType(myString)){
        case "U":
            document.write("First character was upper case");
            break;
        case "L":
            document.write("First character was lower case");
            break;
        case "N":
            document.write("First character was a number");
            break;
        default:
            document.write("First character was not a character or a number");
    }
    </script>
    </body>
    </html>
    
    代码二
    function checkCarType(charToCheck){
        var returnValue = "O";
        var charCode = charToCheck.charCodeAt(0);
        
        if (charCode >= "A".charCodeAt(0) && charCode <= "Z".charCodeAt(0)){
            //returnValue = "U";
            return "U";
        }
        else if (charCode >= "a".charCodeAt(0) && charCode <= "z".charCodeAt(0)){
            //returnValue = "L";
            return "L";
        }
        else if (charCode >= "0".charCodeAt(0) && charCode <= "9".charCodeAt(0)){
            //returnValue = "N";
            return "N";
        }
            //return returnValue;
            return "O";
    }
    
    2、代码分析

    第二段代码能够实现和第一段代码同样的功能,但是我们通常推荐使用第一种形式的代码。为什么我们不采用这种方式呢?这种方式的缺点就是在一个函数中使用了多个return语句,这使得函数的执行流难于跟踪。对于一个较小的函数来说,这可能并不是什么大问题,但对于一个较复杂的函数来说,就可能变成一个棘手的问题。采用第一种方式的代码,在函数结束前只有一个唯一的return语句,我们可以非常准确的知道函数将在这个return语句后结束。而对于第二个版本的函数,它具有4个return语句,因此函数可能在任何一个可达的return语句之后结束。这样,函数将具有4个可能的出口和返回位置。这使得对函数中执行流的判断更加麻烦。

    3、总结分析

    1、一个return代表着一个出口和返回位置。
    2、函数最好的形式是一个入口一个出口,从入口进入,执行流执行完所有东西之后从出口中出去。如果一个函数中含有多个return那么在执行流结束之前,函数的执行流都无法知道函数将在哪个return语句结束,使得执行流难以跟踪。
    3、因此,return的语句越少越好,虽然同样都可以解决问题,但是改造之后的函数相对于原函数不确定性,性能等都可能有极大的问题。

    相关文章

      网友评论

        本文标题:JavaScript的return程序流

        本文链接:https://www.haomeiwen.com/subject/rvlsuftx.html