<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 命令式思想 1. 相當于面向過程開發,一步一步自己實現 ``` const arr = [1,2,3,4] const newarr = [] for( let i = 0; i < arr.length; i++ ) { newarr.push( arr[i] * 2 ) } ``` ### 聲明式思想 1. 只需要關注結果,不需要管過程是如何實現的 ``` const arr = [1,2,3,4] const newarr2 = arr.map(item => item * 2) ``` ### 閉包 1. 閉包中兩大重要概念:變量的作用域 && 變量的生命周期 2. 作用域:目前有三大作用域:全局作用域 && 函數作用域 && 塊級作用域 3. 函數作用域中聲明的變量: 1. 如果未用var聲明,則會變成全局變量 2. 在函數內聲明的變量只能在函數內部進行使用,外部無法訪問到函數內部的變量 3. 函數內使用的變量可以向上查找,不會向下級的作用域查找,直到找到全局作用域,也就是頂層作用域,形成了所謂的作用域鏈 4. 變量的生命周期: 1. 聲明在全局內的變量會一直存在,除非主動刪除,否則都可以訪問 2. 聲明在函數內部的變量會隨著函數的調用完成,進行銷毀 ``` function fn() { var a = 10 //調用完后該變量生命周期終止,并銷毀 } fn() ``` 5. 閉包的核心:函數調用完后,其上下文執行環境不會進行銷毀 6. 閉包的兩種應用場景:1. 函數做為返回值,2. 函數作為參數傳遞 7. 閉包的開發應用場景: 1. 延續局部變量的壽命,解決部分低版本瀏覽器在創建HTTP請求的時候變量已經被銷毀的bug 2. 把一些不需要暴露在全局下的變量,封裝成局部變量 ``` var report = (function(){ var imgs = []; return function( src ){ var img = new Image(); imgs.push( img ); img.src = src; } })(); ``` ### 函數節流 1. 當某些事件被頻繁的觸發,其事件回調也被頻繁的觸發,從而引發了性能上的問題 2. 常見的導致頻繁觸發的事件是:window.onresize onmousemove touchmove 觸發頻率過高的函數 3. 解決思路:setTimeout ### 函數分時加載 1. 假如頁面中現在有1000條數據,需要創建1000個DOM元素,一次性渲染瀏覽器會很耗性能,可能使用分時加載函數 ### 高階函數 1. 滿足兩個條件之一都可以稱為高階函數:接收函數作為參數 || 函數作為返回值返回 ### 函數柯里化:curring 1. 函數柯里化又稱部分求值,首先會接收一些參數,接收這些參數之后不會立即進行求值,而是繼續返回另一個函數, 之前傳入的參數在函數形成的閉包中保存起來,待真正需要求值的時候一次求出來 ### 命名空間 1. 命名空間可以減少全局變量的污染:聲明為對象的屬性,自執行函數,使用閉包包裝私有變量,_init,可使用下劃線區分
                  <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>

                              哎呀哎呀视频在线观看