1. 程式人生 > >總結-全域性環境&執行流程&錯誤型別&垃圾回收機制&閉包&函式&回撥函式

總結-全域性環境&執行流程&錯誤型別&垃圾回收機制&閉包&函式&回撥函式

全域性環境&執行流程&錯誤型別&垃圾回收機制&閉包&函式&回撥函式 全域性環境 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屬性表示實參的個數。 回撥函式 將函式作為值傳遞給另一個函式