最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

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

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

例如:

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

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

如下:

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

函數(shù)聲明的好處

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

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

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

例如:

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

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

如下的方式是錯誤的:

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

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

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

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

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

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

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

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

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

如何在表達式和聲明之間進行選擇

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • 抓取JavaScript動態(tài)加載的內(nèi)容的方法總結(jié)

    抓取JavaScript動態(tài)加載的內(nèi)容的方法總結(jié)

    JavaScript動態(tài)加載的內(nèi)容常見于現(xiàn)代Web應(yīng)用中,用于增強用戶體驗和減少初始頁面加載時間,然而,這些動態(tài)加載的內(nèi)容對于傳統(tǒng)的網(wǎng)頁抓取工具來說往往是不可見的,本文主要介紹了有JavaScript動態(tài)加載的內(nèi)容如何抓取,需要的朋友可以參考下
    2024-09-09
  • javascript實現(xiàn)移動的模態(tài)框效果

    javascript實現(xiàn)移動的模態(tài)框效果

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)移動的模態(tài)框效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • json屬性名為什么要雙引號(個人猜測)

    json屬性名為什么要雙引號(個人猜測)

    json屬性名為什么要雙引號?更加規(guī)范,利于解析、避免class等關(guān)鍵字引起的不兼容問題,需要的朋友可以參考下
    2014-07-07
  • JS清空多文本框、文本域示例代碼

    JS清空多文本框、文本域示例代碼

    點擊按鈕清空頁面上所有的文本框、文本域,下面有個不錯的示例,大家可以參考下其具體實現(xiàn)
    2014-02-02
  • JavaScript知識點總結(jié)(六)之JavaScript判斷變量數(shù)據(jù)類型

    JavaScript知識點總結(jié)(六)之JavaScript判斷變量數(shù)據(jù)類型

    這篇文章主要介紹了JavaScript知識點總結(jié)(六)之JavaScript判斷變量數(shù)據(jù)類型的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-05-05
  • filters.revealTrans.Transition使用方法小結(jié)

    filters.revealTrans.Transition使用方法小結(jié)

    有看到幻燈片調(diào)用會用到divid.filters.revealTrans.Transition=Math.floor(Math.random()*23)和divid.filters.revealTrans.apply(),那么這兩個都是什么意思呢?
    2010-08-08
  • 微信小程序?qū)崿F(xiàn)字母索引菜單

    微信小程序?qū)崿F(xiàn)字母索引菜單

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)字母索引菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript實現(xiàn)圖片切換效果

    JavaScript實現(xiàn)圖片切換效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)圖片切換效果,以及自定義屬性的應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • JavaScript實現(xiàn)跟隨廣告的示例代碼

    JavaScript實現(xiàn)跟隨廣告的示例代碼

    浮動廣告是目前網(wǎng)站很常見的一種廣告形式,浮動廣告能實時跟隨用戶的瀏覽,有效的傳達產(chǎn)品要表達的意思,達到很好的傳播效果。本文使用JavaScript實現(xiàn)跟隨廣告的示例代碼,感興趣的可以了解一下
    2021-11-11
  • JavaScript中數(shù)據(jù)過濾的幾種常見方法

    JavaScript中數(shù)據(jù)過濾的幾種常見方法

    JavaScript是一種廣泛使用的編程語言,它提供了多種方法來對數(shù)據(jù)進行過濾,在本文中,我們將介紹JavaScript中常見的幾種數(shù)據(jù)過濾方法,并提供相應(yīng)的示例,感興趣的朋友跟隨小編一起看看吧
    2023-10-10

最新評論

英吉沙县| 永仁县| 石屏县| 博客| 珠海市| 辉县市| 冷水江市| 枝江市| 琼海市| 辽宁省| 江孜县| 泗洪县| 霍州市| 田林县| 左贡县| 曲水县| 慈溪市| 庄河市| 阳泉市| 拉萨市| 河间市| 香港 | 惠安县| 芜湖市| 新津县| 七台河市| 黄骅市| 五莲县| 门头沟区| 陵水| 双流县| 巴里| 喜德县| 泾源县| 沽源县| 瑞安市| 东安县| 景东| 法库县| 阳山县| 海阳市|