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

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

哪種Javascript閉包方案是首選?

哪種Javascript閉包方案是首選?

在什么情況下計(jì)數(shù)器 1 更可?。吭谑裁辞闆r下計(jì)數(shù)器 2 會更好?我知道當(dāng)全局聲明變量時(shí)可能是不可預(yù)測的,但是是否有一種情況會比在函數(shù)中聲明它更可取?// counter1 codefunction counterMaker() {  let count = 0;  return function counter() {    return count++;  };}// counter2 codelet count = 10;function counter2() {  return count++;}
查看完整描述

3 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個贊

如果您希望變量在其他位置可引用,則可以在外部作用域中聲明該變量,而不必增加計(jì)數(shù):count


let count = 10;


function counter2() {

  return count++;

}



counter2();

counter2();

console.log(count);

如果變量位于閉包內(nèi),并且閉包僅公開返回的函數(shù),則上述操作是不可能的 - 唯一的選擇是調(diào)用返回的函數(shù),即使您只想檢查其當(dāng)前值,該函數(shù)也會遞增計(jì)數(shù)。count


第一種方法,其中只能由閉包中的函數(shù)查看,如果你想向代碼的使用者和讀者清楚地表明變量是私有的(并且在外部完全不可訪問),這將是有用的。countcountercounterMakercount


當(dāng)您想要創(chuàng)建計(jì)數(shù)器的多個實(shí)例時(shí),第一種方法也可以工作,而第二種方法則不行(除非您每次需要計(jì)數(shù)器時(shí)都重復(fù)計(jì)數(shù)器變量并運(yùn)行函數(shù),這很愚蠢)。


查看完整回答
反對 回復(fù) 2022-08-18
?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個贊

計(jì)數(shù)器 1 代碼的說明。


// counter1 code

function counterMaker() {

  let count = 0;

  return function counter() {

    return count++;

  };

}

在這里,您將函數(shù)返回給調(diào)用方。因此,可以在呼叫者處執(zhí)行類似操作。


var c = counterMaker()

c() //0

c() //1

c() //1

var b = counterMaker()

b() //0

b() //1

b() //1

因?yàn)槟趪L試使用函數(shù)表達(dá)式時(shí)嘗試將該函數(shù)和變量環(huán)境括起來。因此,您的增量函數(shù)不會暴露在外部。如果這有意義,那么你就會明白為什么閉包和閉包在哪里的整個簡潔性。


代碼 2 的說明


// counter2 code

let count = 10;


function counter2() {

  return count++;

}

您正在嘗試將遞增函數(shù)公開到全局中,現(xiàn)在您將無法創(chuàng)建像上面代碼 1 那樣的多個實(shí)例。因此,每次調(diào)用函數(shù) counter2 時(shí),它只會增加 whatsover。


查看完整回答
反對 回復(fù) 2022-08-18
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個贊

我認(rèn)為在這種情況下,通過閉包訪問變量比訪問外部變量更可取。訪問外部變量會產(chǎn)生副作用,您的函數(shù)依賴于在其外部發(fā)生的變化,并且它們可能是不可預(yù)測的?;蛘?,將來,您將要移動此函數(shù),您仍然需要監(jiān)視此外部變量。我認(rèn)為所有外部依賴關(guān)系都應(yīng)該通過參數(shù)傳遞給函數(shù)。


查看完整回答
反對 回復(fù) 2022-08-18
  • 3 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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