3 回答

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)該避免。

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)。正如您所說,鍵入的字符減少了一個字符,在某些鍵盤上也更容易觸及。

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)
添加回答
舉報(bào)