<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >[info]待整理...... # 第 1 章 理解函數式編程 理解函數式編程,需要知道如下一些基本概念: - 聲明式編程 - 純函數 - 引用透明 - 不可變性 ## 聲明式編程 關于聲明式編程,看兩段代碼即可: ```js // 命令式的 const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for (let i = 0;i < array.length; i++) { array[i] = Math.pow(array[i], 2) } // 聲明式的 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(num => Math.pow(num, 2)) ``` 命令式編程會很具體地告訴計算機如何執行某個任務。 函數式編程屬于聲明式編程范式,這種范式會描述一系列的操作,但不會暴露它們是如何實現的或是數據流如何穿過它們。它將程序的描述與求值分離開來,關注于如何用各種表達式來描述程序邏輯。 ## 純函數 純函數具有以下性質: - 僅取決于提供的輸入,而不依賴于任何在函數求值期間或調用間隔時可能變化的隱藏狀態和外部狀態 - 不會造成超出其作用域的變化,例如修改全局對象或引用傳遞的參數 或許這么理解更好: - 如果函數的調用參數相同,則永遠返回相同的結果。它不依賴于程序執行期間函數外部任何狀態或數據的變化,必須只依賴于其輸入參數。 - 該函數不會產生任何可觀察的副作用,例如網絡請求,輸入和輸出設備或數據突變(mutation),一般來說,函數在讀取或寫入外部資源時都會產生副作用。 一般以下行為被稱為副作用: - 改變一個全局的變量、屬性或數據結構 - 改變一個函數參數的原始值 - 處理用戶輸入 - 拋出一個異常,除非它又被當前函數捕獲了 - 查詢 HTML 文件、瀏覽器的 cookie 或訪問數據庫 ```js let counter = 0 function increment () { return ++counter } ``` 例如上面的函數就是不純的,因為它讀取并修改了一個外部變量。 ## 引用透明和可置換性 如果一個函數對于相同的輸入始終產生相同的結果,那么就說它是引用透明的。之所以追求這種特指,是因為它不僅能使代碼更易于調試,還可以讓我們更容易推理整個程序。 ## 不可變性 不可變數據是指那些被創建后不能更改的數據。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看