JavaScript 函數聲明、函數定義、匿名函數和閉包的區別

 首先來比較一下以下兩個例子編程

 

  
  
  
  
  1. function f1(name){  
  2. //函數體 
  3. var f1 = function(name){ 
  4. //函數體 
  5. };

你們會想到什麼,首先前者是指函數聲明,後者是指函數表達式,他們之間的區別是前者會在代碼執行以前被JS解釋器加載到做用於中,這樣一來就能夠在編程時在定義函數以前調用這個函數,此法是有效的;然後者則是在代碼執行到那一行時候纔會有定義,此外函數表達式是建立了一個匿名函數,而後將匿名函數賦值給一個變量。‘閉包

接下來談談閉包和匿名函數的區別:ide

閉包是指有權訪問另外一個函數做用域之中的變量的函數,例如在一個函數內部建立另外一個函數,代碼以下函數

 

  
  
  
  
  1. function get(){ 
  2.   var name = "CTO"
  3.   function ret(){ 
  4.     name = "UFO"
  5.  } 
  6.  ret(); 
  7.  return name; 

匿名函數是指沒有沒有名字的函數。spa

注意:閉包能夠看作是匿名函數運用的一個子集。作用域

相關文章
相關標籤/搜索