麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 內存角度理解回調函數

內存角度理解回調函數

來源:千鋒教育
發布人:wjy
時間: 2022-06-02 11:31:00 1654140660

關于回調函數對于初學者來說是個比較難以理解的知識點。本文以內存(只以堆棧)的角度來理解回調函數

變量的內存情況

在js中數據類型的劃分可以分為基本類型與引用類型。兩種類型在內存中的表現形式是不一樣的

內存角度理解回調函數

1、基本類型

```js
//棧區創建一個變量 記錄的值為10
var num = 10;
//棧區創建一個n變量 并且賦值為num變量的值
var n = num;
//將棧區n變量的值修改為20
n = 20;

console.log(num)
```

1

2、引用類型

```js
//棧區創建一個arr變量 將具體的元素值保存到堆區  并且在arr變量中的值記錄為堆區的地址
var arr = [1,2];
//棧區創建一個newArray的變量 并且將 arr在棧區存儲的地址賦值給newArray
var newArray = arr;
//順著newArray記錄的地址值修改數據
newArray[0] = 100;
console.log(arr);// [100,2]
```

2

函數的情況

函數也是一種引用類型,所以創建一個函數就與創建數組在內存的情況類似,當創建一個函數時,會在棧區創建一個變量,然后將函數代碼相關的信息存儲到堆區,最后將堆區的地址賦值給棧區的變量保存

```js
function fn(){
    console.log('fn')
}
// 創建函數 就是創建了一個函數名稱的同名變量。并且值指向"堆區”的地址(聲明式與賦值式一致).在堆區中會保存代碼片段相關的信息
//上面的代碼等價于 var fn = function(){consoel.log('fn')}
console.log(fn)

// 當函數調用時,系統可以通過"變量名稱/函數名稱" 找到函數代碼在堆區的地址。也就是可以改寫形式為“內存地址()”,()就是表示要將代碼運行起來
fn()
```

3

自調用匿名函數

```js
(function(){
    console.log('123456')
})();
/*

 function(){
     console.log('123456')
 }
 就是一個函數表達式,本身就可以得到一個內存地址   例如該內存地址等于0X111 ,內存地址中存儲著函數的代碼信息
 所以上面的代碼可以理解為(0X111)() 這種形式,這種形式與 賦值式的函數時是一直 所以最后可以調用函數
 
*/
```

回調函數

回調函數就是將函數作為作為另外一個函數調用的參數進行傳遞。其本質也只是傳遞了一個內存地址

1、函數參數傳遞引用類型

```js
function fn(a){
    //3、當函數調用時 會隱藏的進行 var a = arr的操作 所以將arr變量存儲的地址賦值給了a變量  所以a就是一個地址  因為a變量存儲的值對應的是函數所以最終時候可以通過a[下標]訪問元素的
    console.log(a)
}
//1、棧區創建一個arr變量 賦值為堆區中保存數據的地址
var arr = [1,2,3]
//2、調用函數并且傳遞arr變量的值  傳遞的是一個內存地址
fn(arr)
```

2、將函數作為參數傳遞

```js
//1、創建一個fn變量 并且賦值為堆區中的地址
function fn(a){
    //4、執行函數時進行形參賦值 var a = callback  所以將callback變量的地址賦值給了a 由于a是一個函數 所以可以()
    a()
}
//2、創建callback 并且賦值為堆區中的地址
var callback  = function(){
    console.log('回調函數');
}
//3、調用fn函數 并且傳遞參數callback的地址
fn(callback)
```

4

更多關于“web前端培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的提升班,高品質課程助理你實現夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 全彩里番acg里番| 131美女爽爽爽爱做视频| 里番全彩acg★无翼娜美| 情侣视频精品免费的国产| 无码日韩精品一区二区免费| 亚洲私人影院| 国产欧美日韩精品专区| 特级aaaaaaaaa毛片免费视频| 花季app色版网站免费| 亚洲一本高清| 中文字幕亚洲综合久久菠萝蜜| 亚洲区小说区| 丰满上司的美乳| а√天堂中文在线官网| 久久成人国产精品| 中文字幕在线观看国产| 里番全彩acg★无翼娜美| 黄色a级片电影| 亚洲国产视频网| 美女脱了内裤打开腿让人桶网站o| 本子库全彩无遮挡无翼乌触手| 翁与小莹浴室欢爱51章| yy22.tv夜月直播| 香港台湾日本三级纶理在线视 | 亚洲国产成人久久综合区| 国产亚洲欧美日韩在线看片| 一级毛片免费观看不收费| 欧美大片在线观看完整版| 日韩三级视频| 国产成人免费a在线资源| 日本护士在线视频xxxx免费| 把她抵在洗手台挺进撞击视频| 小向美奈子中出播放| 国内精品视频一区二区八戒 | 第一毛片| 毛片免费在线播放| 久久久久亚洲精品中文字幕| 两个小姨子在线观看| 三级黄色小视频| 性xxxxhd高清| 男人j进女人p免费视频|