JavaScript的return程序流

原文

博客原文

大綱

1、場景分析
2、代碼分析
3、總結(jié)分析

1、場景分析

以下有兩段代碼,這兩段代碼都可以使用檢查輸入的字符的大小寫的功能,我們可以通過對這兩段代碼的分析來認(rèn)識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、代碼分析

第二段代碼能夠?qū)崿F(xiàn)和第一段代碼同樣的功能,但是我們通常推薦使用第一種形式的代碼。為什么我們不采用這種方式呢?這種方式的缺點就是在一個函數(shù)中使用了多個return語句,這使得函數(shù)的執(zhí)行流難于跟蹤。對于一個較小的函數(shù)來說,這可能并不是什么大問題,但對于一個較復(fù)雜的函數(shù)來說,就可能變成一個棘手的問題。采用第一種方式的代碼,在函數(shù)結(jié)束前只有一個唯一的return語句,我們可以非常準(zhǔn)確的知道函數(shù)將在這個return語句后結(jié)束。而對于第二個版本的函數(shù),它具有4個return語句,因此函數(shù)可能在任何一個可達(dá)的return語句之后結(jié)束。這樣,函數(shù)將具有4個可能的出口和返回位置。這使得對函數(shù)中執(zhí)行流的判斷更加麻煩。

3、總結(jié)分析

1、一個return代表著一個出口和返回位置。
2、函數(shù)最好的形式是一個入口一個出口,從入口進入,執(zhí)行流執(zhí)行完所有東西之后從出口中出去。如果一個函數(shù)中含有多個return那么在執(zhí)行流結(jié)束之前,函數(shù)的執(zhí)行流都無法知道函數(shù)將在哪個return語句結(jié)束,使得執(zhí)行流難以跟蹤。
3、因此,return的語句越少越好,雖然同樣都可以解決問題,但是改造之后的函數(shù)相對于原函數(shù)不確定性,性能等都可能有極大的問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評論 0 13
  • ‘‘主任,下面有學(xué)生打架了你快去看看吧’’ “都別打了,教導(dǎo)主任來了” “黑老大來了,這下有看頭了,肯定要重罰了”...
    嗜睡青貓閱讀 575評論 2 8
  • 在西方,任何理論都會有數(shù)學(xué)的參與。牛頓說過大自然這本書所用的書寫語言是數(shù)學(xué)。他們對一切的探索和認(rèn)知都希望能用數(shù)學(xué)進...
    星芝閱讀 302評論 0 0
  • 閱讀貴在堅持,積少成多,體會收獲 這課由單詞組成的文章,難度簡單。所以每個圖片后面我都設(shè)置了問題提問:what c...
    瀟的時光閱讀 218評論 0 0
  • 2017年7月6日 聚焦網(wǎng)初五原創(chuàng) 張婷 鄭州 分享第三十四天 星期四小雨陣雨 越憤怒越無力 ...
    心愿幸福閱讀 338評論 0 0

友情鏈接更多精彩內(nèi)容