第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么叫函數(shù)表達(dá)式而不是函數(shù)聲明呢?

為什么叫函數(shù)表達(dá)式而不是函數(shù)聲明呢?

我開始學(xué)習(xí) React,現(xiàn)在我又回到了 JavaScript 中的一些更基本的概念。我已經(jīng)了解了函數(shù)表達(dá)式和函數(shù)聲明之間的區(qū)別,但仍然困惑我為什么函數(shù)表達(dá)式不稱為函數(shù)聲明。如果這是一個(gè)變量聲明:const foo = 5;那為什么這叫函數(shù)表達(dá)式呢?:const bar = function() {    // Some code};在第二個(gè)例子中,不是聲明了“const bar”嗎?為什么函數(shù)表達(dá)式和函數(shù)聲明如此命名?為什么函數(shù)表達(dá)式不稱為函數(shù)聲明,反之亦然?
查看完整描述

2 回答

?
千萬(wàn)里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

有趣的問(wèn)題。措辭可能有軟邊界,這也是造成這種混亂的部分原因。

首先,一些粗略的定義:

  • 表達(dá):我認(rèn)為最好通過(guò)一個(gè)例子來(lái)思考這一點(diǎn)。2 * 2是一個(gè)表達(dá)式,因?yàn)槟梢岳^續(xù)對(duì)其進(jìn)行其他操作,例如2 * 2 - 3.?if (...)另一方面,它不是 javascript 中的表達(dá)式,它不會(huì)解析為您可以對(duì)其進(jìn)行進(jìn)一步操作的值。這樣做是無(wú)效的if (...) {...} / 2。這個(gè)“定義”有一些漏洞,但對(duì)于這個(gè)答案來(lái)說(shuō)應(yīng)該足夠好了。

  • 聲明:聲明只是聲明您將使用某個(gè)變量名稱。因此,在您的示例中const foo = 5,它是const foo實(shí)際聲明的部分,= 5只是初始化聲明。

考慮到這一點(diǎn),讓我們考慮兩個(gè)函數(shù)示例,并看看該術(shù)語(yǔ)如何在這些示例中發(fā)揮作用:

  1. const g = function() {}

這里正在進(jìn)行一項(xiàng)聲明,即const g.?我們還看到有一個(gè)函數(shù)被創(chuàng)建并分配給 g。我們正在用結(jié)果做某事function() {}(我們將其分配給某物),這意味著 javascript 會(huì)將其解釋為函數(shù)表達(dá)式。

  1. function f() {}

我們沒(méi)有將此函數(shù)用作表達(dá)式(在創(chuàng)建它后我們沒(méi)有對(duì)其進(jìn)行任何其他操作),因此 javascript 實(shí)際上會(huì)以與我們的第一個(gè)示例不同的方式對(duì)待它。它將在本地命名空間中聲明 f ,并將應(yīng)用函數(shù)提升。如果您只是添加了+before?function f() {},那么您會(huì)導(dǎo)致 javascript 將其解釋為表達(dá)式,并且這些功能將被禁用。您可以在開發(fā)工具中嘗試 - 輸入+function f(){}or?const g = function f(){}, f 將保持未定義狀態(tài)。

javascript 在不同的上下文中以不同的方式對(duì)待 function 關(guān)鍵字這一事實(shí)是這種語(yǔ)言選擇的核心。您幾乎可以將“function”關(guān)鍵字視為具有兩種不同的含義,所選擇的含義取決于上下文。任何時(shí)候函數(shù)在表達(dá)式上下文中使用或未命名時(shí),它都會(huì)采用“表達(dá)式”形式,我們將其稱為“函數(shù)表達(dá)式”。否則,它采用包含一些額外功能的替代形式,例如將函數(shù)名稱聲明為局部變量。這可能就是我們將這種替代形式稱為函數(shù)聲明的原因。然而,就像OP正確指出的那樣,即使使用const f = function() {},聲明仍然發(fā)生,只是沒(méi)有通過(guò)function關(guān)鍵字發(fā)生。

腳注:對(duì)于像這樣的示例+function f() {},f 不會(huì)在與 g 相同的范圍內(nèi)定義,但它確實(shí)在 f 體內(nèi)定義。換句話說(shuō),任何命名函數(shù)表達(dá)式都在其自己的主體內(nèi)聲明其名稱。


查看完整回答
反對(duì) 回復(fù) 2023-08-10
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

那為什么叫函數(shù)表達(dá)式呢?:


給變量賦值,實(shí)際上就是一個(gè)表達(dá)式。在你的例子中foo = 5,這是一個(gè)表達(dá)式。你也在聲明foo,但它仍然是一個(gè)表達(dá)式。


類似地,另一個(gè)示例const bar = function() {}稱為函數(shù)表達(dá)式,以區(qū)分函數(shù)聲明和函數(shù)表達(dá)式。


函數(shù)表達(dá)式


const bar = function() {

    // Some code

};

與函數(shù)聲明


function foo() {

    // Some code

};


查看完整回答
反對(duì) 回復(fù) 2023-08-10
  • 2 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)