五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

純干貨 js變量和函數(shù)提升動畫詳解 作用域以及var和let區(qū)別

2023-08-17 20:33 作者:Moonless米飯米飯真好吃  | 我要投稿

Var的聲明提升機(jī)制

js變量提升機(jī)制中,var聲明會被提升到函數(shù)頭部,但是賦值不會提升。原因如下:

  1. var聲明相當(dāng)于給變量開辟內(nèi)存空間,但不會分配具體值。
  2. 只有變量聲明會被提升,但賦值語句執(zhí)行需要按代碼順序從上到下進(jìn)行。
  3. 如var a=10,變量a空間已開辟但未分配值10,此時a的值為undefined。
  4. 如果在聲明前訪問a變量,會得到undefined不是報錯。
  5. 等到代碼真正執(zhí)行var a=10這步時,變量a才會被賦上具體值10。

所以簡單來說:var只聲明空間,沒有具體數(shù)值,無法“提升賦值”。賦值需要按序執(zhí)行,與聲明階段相分離。

函數(shù)也存在提升現(xiàn)象,值就是函數(shù)體本身。這也解釋了為什么在定義函數(shù)前就可以提前調(diào)用。

與function聲明的函數(shù)不同,函數(shù)表達(dá)式遵循的是變量提升規(guī)則。通過賦值后才可調(diào)用。(與上述var a=1 提升為 var a 一樣,這里的變量只不過是一個函數(shù),var f=表達(dá)式 提升為 var f ,聲明了f,但是卻沒有賦值,這里就是沒有賦予函數(shù)表達(dá)式。)

————————————————————

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

函數(shù)表達(dá)式是使用變量接受一個函數(shù)體的語法形式。函數(shù)表達(dá)式將函數(shù)定義包裝在一個變量賦值語句中,可以讓函數(shù)可以作為值來使用,如進(jìn)行賦值、傳參等操作。

它與函數(shù)聲明的主要區(qū)別在于:

函數(shù)聲明:

function foo() {

// function body

}

使用function關(guān)鍵字聲明,函數(shù)名為foo。整體聲明會提升

————————————————————

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

var/let foo = function() {

// function body

}

使用變量接收一個匿名函數(shù),變量foo作為函數(shù)名,只有變量名foo會提升,函數(shù)體不會提升

————————————————————

在相同作用域內(nèi),如果變量名和函數(shù)名重復(fù),函數(shù)名優(yōu)先。

————————————————————

作用域

var 和let 都可以先聲明再賦值,但是const必須在聲明的時候就賦值。但是let和const在聲明前變量都是不可訪問狀態(tài),理解為不會提升即可。


純干貨 js變量和函數(shù)提升動畫詳解 作用域以及var和let區(qū)別的評論 (共 條)

分享到微博請遵守國家法律
德江县| 寿阳县| 牡丹江市| 中山市| 宜兰县| 禄劝| 高雄市| 喀喇沁旗| 满城县| 斗六市| 东乡族自治县| 徐州市| 桂平市| 临清市| 辽中县| 九龙城区| 九龙坡区| 萍乡市| 莱州市| 峨眉山市| 永嘉县| 福鼎市| 襄城县| 辽中县| 赣州市| 金湖县| 富阳市| 勃利县| 铁岭市| 电白县| 南开区| 项城市| 榆中县| 大安市| 韶关市| 和田县| 吉林市| 田东县| 德令哈市| 黄石市| 开远市|