欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript?函數(shù)表達(dá)式與函數(shù)聲明的用法及區(qū)別

 更新時(shí)間:2022年06月01日 09:54:31   作者:天行無忌  
這篇文章主要介紹了JavaScript?函數(shù)表達(dá)式與函數(shù)聲明詳析,函數(shù)表達(dá)式和函數(shù)聲明是JavaScript中創(chuàng)建函數(shù)的兩種方法,下面文章具體的相關(guān)內(nèi)容介紹,需要的小伙伴可以參考一下

前言

在 JavaScript 中創(chuàng)建函數(shù)有兩種方法:函數(shù)表達(dá)式和函數(shù)聲明。在本文中,將討論何時(shí)使用函數(shù)表達(dá)式與函數(shù)聲明,并解釋它們之間的區(qū)別。

函數(shù)聲明已經(jīng)使用了很長時(shí)間,但函數(shù)表達(dá)式已經(jīng)逐漸占據(jù)主導(dǎo)地位。函數(shù)表達(dá)式和函數(shù)聲明之間有一些關(guān)鍵區(qū)別,來看看這些差異,以及何時(shí)在代碼中使用函數(shù)表達(dá)式與函數(shù)聲明。

// 函數(shù)聲明
function funcDeclaration() {
    return "函數(shù)聲明";
}
// 函數(shù)表達(dá)式
const funcExpression = function () {
    return "函數(shù)表達(dá)式";
};

什么是函數(shù)聲明?

函數(shù)聲明是在創(chuàng)建函數(shù)并為其命名的方式,開始使用 function 關(guān)鍵字聲明函數(shù)。

例如:

function customFunction() {
    // 函數(shù)邏輯
    conosle.log("Hello")
};

如上所見,函數(shù)名稱(customFunction)是在創(chuàng)建函數(shù)時(shí)聲明的,這種方式著這個(gè)函數(shù)可以在定義之前調(diào)用它,

如下:

customFunction();
function customFunction() {
    // 函數(shù)邏輯
    console.log("Hello");
}

函數(shù)聲明的好處

  • 它可以使代碼更具可讀性:如果有一個(gè)很長的函數(shù),給它一個(gè)名字可以幫助跟蹤它在做什么。
  • 函數(shù)聲明被提升:這種方式定義的函數(shù)可以在定義之前調(diào)用它,如果需要在定義之前使用該函數(shù),這將非常有用。

什么是函數(shù)表達(dá)式?

函數(shù)表達(dá)式是在創(chuàng)建函數(shù)并將其分配給變量,此方式定義的函數(shù)是匿名函數(shù),這意味著它沒有名稱。

例如:

const customFunction = function() {
    // 函數(shù)邏輯
    conosle.log("Hello")
};

如上所述,該函數(shù)被分配給 customFunction 變量,這種方式必須先定義該函數(shù),才能調(diào)用它。

如下的方式是錯(cuò)誤的:

customFunction();
const customFunction = function() {
    // 函數(shù)邏輯
    conosle.log("Hello")
};

函數(shù)表達(dá)式的好處

  • 比函數(shù)聲明更靈活:可以創(chuàng)建函數(shù)表達(dá)式并將它們分配給不同的變量,這在需要在不同的地方使用相同的函數(shù)時(shí)會(huì)很有幫助。
  • 函數(shù)表達(dá)式未提升:在代碼中定義它們之前不能使用它們。如果想確保函數(shù)僅在定義后使用,這將很有幫助。

函數(shù)表達(dá)式和函數(shù)聲明之間的區(qū)別

函數(shù)表達(dá)式和函數(shù)聲明之間有幾個(gè)關(guān)鍵區(qū)別:

  • 函數(shù)聲明被提升(關(guān)于提升,可以參閱《Javascript變量函數(shù)聲明提升深刻理解》,而函數(shù)表達(dá)式則沒有??梢栽诙x函數(shù)聲明之前調(diào)用它,但不能使用函數(shù)表達(dá)式執(zhí)行此操作。
  • 使用函數(shù)表達(dá)式,可以在定義函數(shù)后立即使用它。使用函數(shù)聲明,必須等到整個(gè)腳本被解析。
  • 函數(shù)表達(dá)式可以是匿名的,而函數(shù)聲明則不能。

函數(shù)表達(dá)式中的作用域

let語句類似,函數(shù)聲明被提升到其它代碼的頂部。函數(shù)表達(dá)式不會(huì)被提升。這允許它們從定義它們的范圍內(nèi)保留局部變量的副本。

通常,可以互換使用函數(shù)聲明和函數(shù)表達(dá)式,但有時(shí)函數(shù)表達(dá)式會(huì)生成更易于理解的代碼,而不需要臨時(shí)函數(shù)名。

如何在表達(dá)式和聲明之間進(jìn)行選擇

那么,什么時(shí)候應(yīng)該使用函數(shù)表達(dá)式與函數(shù)聲明呢?

答案取決于需求,如果需要一個(gè)更靈活的函數(shù)或一個(gè)不被提升的函數(shù),那么函數(shù)表達(dá)式就是首選。如果需要一個(gè)更具可讀性和可理解性的函數(shù),請使用函數(shù)聲明。

如上所見,這兩種語法是相似的,最明顯的區(qū)別是函數(shù)表達(dá)式是匿名的,而函數(shù)聲明是有名字的。當(dāng)需要做一些函數(shù)表達(dá)式不能做的事情時(shí),通常會(huì)使用函數(shù)聲明。如果不需要做任何只能通過函數(shù)聲明才能完成的事情,那么通常最好使用函數(shù)表達(dá)式。

當(dāng)需要?jiǎng)?chuàng)建遞歸函數(shù)或需要在定義函數(shù)之前調(diào)用該函數(shù)時(shí),就需要使用函數(shù)聲明。

作為一個(gè)經(jīng)驗(yàn)法則,當(dāng)不需要做這些事情時(shí),使用函數(shù)表達(dá)式來獲得更簡潔的代碼。

何時(shí)選擇函數(shù)聲明與函數(shù)表達(dá)式

在大多數(shù)情況下,很容易確定哪種定義函數(shù)的方法最適合需求。下面這些準(zhǔn)則在大多數(shù)情況下可以快速做出決定。

在以下情況下使用函數(shù)聲明

  • 需要一個(gè)更易讀易懂的函數(shù)(比如一個(gè)長函數(shù),或者需要在不同地方使用的函數(shù))
  • 匿名函數(shù)不適合的需求
  • 需要?jiǎng)?chuàng)建一個(gè)遞歸函數(shù)
  • 需要在定義之前調(diào)用該函數(shù)

在以下情況下使用函數(shù)表達(dá)式

  • 需要一個(gè)更靈活的功能
  • 需要一個(gè)未提升的功能
  • 該函數(shù)只應(yīng)在定義時(shí)使用
  • 該函數(shù)是匿名的,或者不需要名稱供以后使用
  • 想控制函數(shù)何時(shí)執(zhí)行,使用立即調(diào)用函數(shù)表達(dá)式 (IIFE) 等技術(shù)

到此這篇關(guān)于JavaScript 函數(shù)表達(dá)式與函數(shù)聲明的用法及區(qū)別的文章就介紹到這了,更多相關(guān)JS函數(shù)聲明內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論