首先來比較一下以下兩個例子編程
- function f1(name){
- //函數體
- }
- var f1 = function(name){
- //函數體
- };
你們會想到什麼,首先前者是指函數聲明,後者是指函數表達式,他們之間的區別是前者會在代碼執行以前被JS解釋器加載到做用於中,這樣一來就能夠在編程時在定義函數以前調用這個函數,此法是有效的;然後者則是在代碼執行到那一行時候纔會有定義,此外函數表達式是建立了一個匿名函數,而後將匿名函數賦值給一個變量。‘閉包
接下來談談閉包和匿名函數的區別:ide
閉包是指有權訪問另外一個函數做用域之中的變量的函數,例如在一個函數內部建立另外一個函數,代碼以下函數
- function get(){
- var name = "CTO";
- function ret(){
- name = "UFO";
- }
- ret();
- return name;
- }
匿名函數是指沒有沒有名字的函數。spa
注意:閉包能夠看作是匿名函數運用的一個子集。作用域