全局環境&執行流程&錯誤類型&垃圾回收機制&閉包&函數&回調函數 全局環境 1.函數中的this表示改函數所屬的對象 2.window對象的成員在調用時能夠省略window 執行流程 1.編譯代碼:當前script代碼段,檢查語法、詞法是否有錯誤,加載到內存中準備執行 2.執行代碼:執行代碼,在執行下一個帶有script的代碼段 錯誤類型 1.編譯錯誤:簡單理解爲語法錯誤,錯誤所在的script代碼段錯誤,影響該代碼段所有終止執行,可是不會影響其餘代碼段 2.執行類型錯誤:調用上的錯誤,好比調用一個不存在的函數,帶代碼段以前的正常執行,以後的不執行,不影響其餘代碼段 JS垃圾回收機制 什麼是垃圾回收機制:代碼在執行的時候,會將代碼加載到內存中,也就是聲明變量,若是變量或函數沒有用了,瀏覽器會根據它的垃圾回收機制自動回收不在使用的變量。 JS垃圾回收機制有兩種: 1.引用計數形式,計數次數爲零,按期釋放內存 2.標記清除機制,給內存標記,若是使用了內存,就將標記清除。按期將有標記的內存刪除 閉包 什麼是閉包? JS有兩鏈一包的說法,兩鏈是做用域鏈和原型鏈,一包就是閉包。 閉包,指的是詞法表示包括不被計算的變量的函數,也就是說,函數可使用函數以外定義的變量。 1.閉包會形成內存不會被釋放 2.閉包使得函數外部能夠訪問內部的變量 雖然閉包有不少好處,可是不建議你們常常使用閉包程序,可能會產生內存泄漏。 函數進階 1.函數是值 凡是可使用值的地方均可以使用函數,函數只是一個能夠執行的值 2.函數是對象 函數也可使用對象那樣的點語法 3.函數是函數 arguments對象 arguments對象,存在於函數的內部,它可以表達函數的實際參數(實參),除此之外,arguments對象還有一個屬性callee,它表示函數的名字,arguments的length屬性表示實參的個數。 回調函數 將函數做爲值傳遞給另外一個函數