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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js 中的回調(diào)函數(shù)和匿名函數(shù)的疑問?

js 中的回調(diào)函數(shù)和匿名函數(shù)的疑問?

RISEBY 2018-09-03 13:19:08
最近在看js匿名函數(shù)相關(guān),以下代碼的執(zhí)行過程有些不解,請教大家執(zhí)行過程是怎樣的。var func = function(){}for (var i = 3; i >= 0; i--) {     func = function(cb, num){         return function (){                     console.log(num)                     cb()                 }     }(func, i)}func()以上代碼執(zhí)行結(jié)果是0 1 2 3請教下,cb既然是func,為何沒有死循環(huán)?以及整體代碼執(zhí)行過程中都發(fā)生了什么。感謝大家!
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

把for()的四次循環(huán)展開其實會好理解一點。
變成如下代碼:

func = function(cb, num){

        return function (){

                    console.log(num)

                    cb()

                }

    }(func, 3)

func = function(cb, num){

    return function (){

                console.log(num)

                cb()

            }

}(func, 2)

func = function(cb, num){

    return function (){

                console.log(num)

                cb()

            }

}(func, 1)

func = function(cb, num){

    return function (){

                console.log(num)

                cb()

            }

}(func, 0)

實際上循環(huán)是對func進行了四次賦值,你的輸出結(jié)果中的0是

console.log(num)

的輸出結(jié)果,而之后的1,2,3則是

cb()

的輸出結(jié)果。
為什么cb()是func()卻會輸出1,2,3呢?是因為在上一次的賦值里
func()輸出的是1,2,3 所以在一次的賦值中cb()輸出1,2,3 在這之前,console.log()輸出0。
這樣就是為什么會輸出0,1,2,3的結(jié)果的原因了。


查看完整回答
反對 回復(fù) 2018-11-01
  • 1 回答
  • 0 關(guān)注
  • 676 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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