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

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

在ES6 / Typescript中將_(下劃線)變量與箭頭函數(shù)一起使用

在ES6 / Typescript中將_(下劃線)變量與箭頭函數(shù)一起使用

元芳怎么了 2019-10-28 16:49:14
我在一個Angular示例中遇到了這個構(gòu)造,我想知道為什么選擇了這個構(gòu)造:_ => console.log('Not using any parameters');我了解變量_表示不在乎/不使用,但是由于它是唯一的變量,因此沒有任何理由更喜歡使用_:() => console.log('Not using any parameters');當(dāng)然,鍵入的字符數(shù)不能少于一個。在我看來,()語法可以更好地傳達(dá)意圖,并且還更具體地說明類型,因?yàn)榉駝t我認(rèn)為第一個示例應(yīng)該看起來像這樣:(_: any) => console.log('Not using any parameters');萬一重要,這是使用它的上下文:submit(query: string): void {    this.router.navigate(['search'], { queryParams: { query: query } })      .then(_ => this.search());}
查看完整描述

3 回答

?
HUH函數(shù)

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

之所以可以使用此樣式(可能是在此處使用該樣式)的原因_是比短一個字符()。


可選括號與可選大括號屬于同一樣式問題。這在很大程度上取決于品味和代碼風(fēng)格,但由于一致性,在這里傾向于冗長。


盡管箭頭函數(shù)允許單個參數(shù)不帶括號,但它與零,單個解構(gòu),單個休止符和多個參數(shù)不一致:


let zeroParamFn = () => { ... };

let oneParamFn = param1 => { ... };

let oneParamDestructuredArrFn = ([param1]) => { ... };

let oneParamDestructuredObjFn = ({ param1 }) => { ... };

let twoParamsFn = (param1, param2) => { ... };

let restParamsFn = (...params) => { ... };

盡管is declared but never used錯誤固定在打字稿2.0為下劃線的參數(shù),_也可以觸發(fā)unused variable/parameter從棉絨或IDE警告。這是反對這樣做的一個相當(dāng)大的理由。


_通??梢杂糜诤雎缘膮?shù)(如已經(jīng)解釋的其他答案)。盡管這可能被接受,但是這種習(xí)慣可能會導(dǎo)致與_Underscore / Lodash命名空間發(fā)生沖突,并且在存在多個被忽略的參數(shù)時也會令人困惑。因此,正確命名帶下劃線的參數(shù)(在TS 2.0中受支持)是有益的,還節(jié)省了找出函數(shù)簽名的時間以及為什么將這些參數(shù)標(biāo)記為忽略的原因(這違背了將_參數(shù)作為快捷方式的目的):


let fn = (param1, _unusedParam2, param3) => { ... };

由于上述原因,我個人認(rèn)為_ => { ... }代碼風(fēng)格是一種不好的語氣,應(yīng)該避免。


查看完整回答
反對 回復(fù) 2019-10-28
?
Smart貓小萌

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

該()語法傳達(dá)的意圖更好恕我直言,也是更具體的類型


不完全是。()表示該函數(shù)不包含任何參數(shù),不聲明任何參數(shù)。該函數(shù).length為0。


如果使用_,它將明確聲明該函數(shù)將被傳遞一個參數(shù),但您對此并不在意。該函數(shù)的.length值為1,這在某些框架中可能很重要。


因此,從類型的角度來看,這可能是更準(zhǔn)確的操作(尤其是當(dāng)您不使用any而是鍵入時_: Event)。正如您所說,鍵入的字符減少了一個字符,在某些鍵盤上也更容易觸及。


查看完整回答
反對 回復(fù) 2019-10-28
?
守候你守候我

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

可以區(qū)分這兩種用法,并且某些框架使用它來表示不同類型的回調(diào)。例如,我認(rèn)為節(jié)點(diǎn)表達(dá)框架使用它來區(qū)分中間件的類型,例如錯誤處理程序使用三個參數(shù),而路由使用兩個參數(shù)。


這樣的區(qū)分看起來像下面的例子:


const f1 = () => { } // A function taking no arguments

const f2 = _ => { }  // A function with one argument that doesn't use it


function h(ff) { 

  if(ff.length==0) {

    console.log("No argument function - calling directly");

    ff()

  } else if (ff.length==1) {

    console.log("Single argument function - calling with 1");

    ff(1)

  }

}


h(f1)

h(f2)


查看完整回答
反對 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 3623 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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