在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(即時調用函數表達式)時,匿名函數非常方便。 | 命名函數更容易重用,這有助於創建幹淨的代碼。 |
相關用法
- Javascript Atomics.add( )用法及代碼示例
- Javascript Atomics.and()用法及代碼示例
- Javascript Atomics.compareExchange( )用法及代碼示例
- Javascript Atomics.exchange( )用法及代碼示例
- Javascript Atomics.isLockFree( )用法及代碼示例
- Javascript Atomics.load( )用法及代碼示例
- Javascript Atomics.or( )用法及代碼示例
- Javascript Atomics.store( )用法及代碼示例
- Javascript Atomics.sub( )用法及代碼示例
- Javascript Atomics.xor()用法及代碼示例
- Javascript Array.of()用法及代碼示例
- Javascript Array.isArray()用法及代碼示例
- Javascript ArrayBuffer.isView()用法及代碼示例
- Javascript Array valueOf()用法及代碼示例
- Javascript Array map()用法及代碼示例
- Javascript Array reduce()用法及代碼示例
- Javascript Array from()用法及代碼示例
- Javascript Array.splice()用法及代碼示例
- Javascript Array.from()用法及代碼示例
- Javascript Array.join()用法及代碼示例
- Javascript Array.findIndex()用法及代碼示例
- Javascript Array.fill()用法及代碼示例
- Javascript Array findIndex()用法及代碼示例
- Javascript Array every()用法及代碼示例
- Javascript Array.find()用法及代碼示例
注:本文由純淨天空篩選整理自deathmukh大神的英文原創作品 Difference between Anonymous and Named functions in JavaScript。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。