當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Javascript Anonymous和Named的區別用法及代碼示例


JavaScript 或任何編程語言中,函數、循環、數學運算符和變量是最廣泛使用的工具。本文將告訴您匿名函數和命名函數之間的區別。我們將在本文中討論了解命名函數和匿名函數的所有必需概念。

匿名函數:顧名思義,“anonymous function” 指的是沒有名稱或標題的函數。在 JavaScript 中,匿名函數是在沒有標識的情況下聲明的函數。這是常規函數和匿名函數之間的區別。匿名函數創建後無法訪問;它隻能通過將其存儲為函數值的變量來檢索。匿名函數可以有多個參數,但隻能有一個表達式。

用法:

function(){
   // Function Body
}

我們通過例子來理解一下。

示例1:在此示例中,我們構建了一個匿名函數,用於將消息打印到控製台。之後,該函數被保存在測試變量中。我們可以通過調用test()來調用該函數。

Javascript


<script> 
   var test = function () { 
      console.log("This is an anonymous function!"); 
   }; 
   test(); 
</script> 

輸出:

This is an anonymous function!

示例2:匿名函數也可以接受參數。

Javascript


<script> 
   var test = function (platform) { 
      console.log("This is an anonymous ", platform); 
   }; 
  
   test("function!"); 
</script> 

輸出:

This is an anonymous function!

我們確實可以將匿名函數作為參數傳遞給另一個函數,因為 JavaScript 允許使用高階函數。

示例 3:在這裏,我們向setTimeout()方法發送一個匿名函數作為回調函數。這會在 1500 毫秒後調用匿名函數。

Javascript


<script> 
   setTimeout(function () { 
   console.log("This is an anonymous function!"); 
   }, 1500); 
</script> 

輸出:

This is an anonymous function!

命名函數:在 JavaScript 中,命名函數隻是引用函數的一種方式,該函數使用 function 關鍵字,後跟可用作該函數回調的名稱。具有名稱或標識符的普通函數稱為命名函數。它們可以在表達式中使用或在語句中聲明。函數的名稱存儲在函數體內,這很方便。我們可以使用該名稱來獲取一個函數來調用自身,或者像每個對象一樣檢索其屬性。

用法:

function displayMessage(){
 // function..body
}

讓我們通過一些示例來理解這個概念:

示例 1:在本例中,我們將定義一個打印消息的普通函數。

Javascript


<script> 
   function test() { 
       console.log (`This is a named function!`); 
   }; 
</script> 

輸出:

This is a named function! 

示例 2:您可以將命名函數添加到對象的變量中,然後在對象上調用該函數。

Javascript


<script> 
   function test() { 
       console.log (`This is a ${this.func}`); 
   } 
   const func = { 
       func: 'named function!', 
       test 
   } 
   func.test(); 
</script>

輸出:

This is a named function!
 

示例 3:在 JavaScript 中,命名函數是調用函數最常見的方式之一。你總會遇到他們。這裏值得一提的另一點是如何使用 return 關鍵字從函數返回值。這不僅限於命名函數。

Javascript


<script> 
   function createPerson(firstName, lastName) { 
       return { 
           firstName: firstName, 
           lastName: lastName, 
           getFullName() { 
               return firstName + ' ' + lastName; 
           } 
       } 
   } 
   let name = createPerson('This is a', 'named function!'); 
     
   console.log(name.getFullName()); 
</script> 

輸出:

This is a named function!

匿名函數和命名函數之間的區別:

Anonymous functions

Named Functions

在 JavaScript 中,匿名函數(函數表達式)是指那些沒有名稱或標識符來引用的函數;它們被定義為:

function(){

//函數體

}

具有名稱或標識符來引用它們的普通函數(函數聲明)稱為命名函數,定義為:

函數displayMessage(){

//函數..主體

}

匿名函數永遠不會被提升(在編譯時加載到內存中)。 命名函數被提升(在編譯時加載到內存中)。
調用匿名函數時,隻能在聲明行之後調用。 可以在聲明之前調用名稱函數。
在 ES6 之前,匿名函數的名稱屬性被設置為空字符串。 在 ES6 之前,命名函數的名稱屬性被設置為其函數名稱。
為了更容易編程,匿名函數允許上下文範圍。當函數用作數據時,應使用箭頭函數。 由於函數名稱出現在錯誤日誌中,因此命名函數在調試和確定哪個函數產生錯誤時非常有用。
開發 IIFE(即時調用函數表達式)時,匿名函數非常方便。 命名函數更容易重用,這有助於創建幹淨的代碼。


相關用法


注:本文由純淨天空篩選整理自deathmukh大神的英文原創作品 Difference between Anonymous and Named functions in JavaScript。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。