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

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

訪問內(nèi)部回調(diào)的回調(diào)參數(shù)

訪問內(nèi)部回調(diào)的回調(diào)參數(shù)

Qyouu 2021-05-11 13:24:43
我正在嘗試?yán)斫獯舜a。let a = [1, 2, 3, 4, 5];a.forEach(i => {  setTimeout(i => {    console.log(i);  }, 1000);});為什么它給出如下輸出:5 times: undefined我知道javascript異步執(zhí)行代碼和調(diào)度setTimeout功能,當(dāng)?shù)V箷r,的最后一個值i是不確定的,但為什么是不確定的。難道在javascript我們無法訪問外回調(diào)參數(shù)的范圍是什么?
查看完整描述

3 回答

?
森欄

TA貢獻(xiàn)1810條經(jīng)驗 獲得超5個贊

那只是標(biāo)準(zhǔn)陰影。


考慮以下代碼:


let x = "outer";

console.log(x);

{

    let x = "inner";

    console.log(x);

}

console.log(x);

內(nèi)部塊無法訪問外部塊,x因為它已聲明了同名的局部變量。

同樣,在您的代碼中有兩個變量稱為i

    a.forEach(i => {        
            setTimeout(i => {

唯一的區(qū)別是它們是函數(shù)參數(shù),而不是用聲明let。除此之外,它們以相同的方式工作:內(nèi)部i遮蔽外部i,防止訪問。要解決此問題,只需移除inner即可i。setTimeout無論如何,不會將任何有用的參數(shù)傳遞給回調(diào)。


查看完整回答
反對 回復(fù) 2021-05-27
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗 獲得超4個贊

只是刪除了i在setTimeout


let a = [1,2,3,4,5];

a.forEach((i) => {

    setTimeout(() => {

        console.log(i);

    }, 1000);

});


查看完整回答
反對 回復(fù) 2021-05-27
?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊

您的內(nèi)部回調(diào)函數(shù)有一個名為的參數(shù)i,它會遮蓋外部變量i。

setTimeout()不會將任何參數(shù)傳遞到其回調(diào),因此內(nèi)部iundefined。

要使用外部回調(diào)中的參數(shù)或變量,只需使用它。


查看完整回答
反對 回復(fù) 2021-05-27
  • 3 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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