慕妹3146593
2023-02-17 16:05:02
這是一個(gè)工作示例。如您所見(jiàn),我正在調(diào)用setElemHeight函數(shù)并返回一個(gè)來(lái)自getElemHeight. 但我認(rèn)為傳遞價(jià)值而不是功能是一種不好的做法。選項(xiàng) 1)我可以將它包裝在匿名函數(shù)中,如下所示:function () { getElemHeight('.map-svg') }選項(xiàng) 2)我可以在setElemHeight函數(shù)內(nèi)部調(diào)用它并在那里傳遞參數(shù),但我認(rèn)為它會(huì)破壞開(kāi)放封閉原則。我的問(wèn)題是:將參數(shù)傳遞給回調(diào)函數(shù)的正確方法是什么?謝謝。function(elem) { return $(elem).height()}function setElemHeight(elem, callback, offset) { let elemHeight = callback $(elem).height(elemHeight - offset)}$(window).on('load resize', function() { setElemHeight('#dealersTabContent', getElemHeight('.map-svg'), 190)})
1 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
將值傳遞給函數(shù)就可以了,除非元素的高度隨時(shí)間變化。
如果它發(fā)生變化,您將需要在每次調(diào)用事件處理程序時(shí)重新計(jì)算高度。如果沒(méi)有,您可以只傳遞值,因?yàn)闊o(wú)論如何它總是使用相同的值。
另外,這一行:
let elemHeight = callback
如果callback
是一個(gè)函數(shù),這實(shí)際上并不調(diào)用回調(diào),它只是將函數(shù)分配給一個(gè)新變量。
如果你想elemHeight
獲得返回值,你需要這樣做:
let elemHeight = callback() // <== Notice the parenthesis
如果它是一個(gè)值,您可能想要更改名稱(chēng)。
至于開(kāi)閉原則,我認(rèn)為在 JS 作為一種動(dòng)態(tài)的、弱類(lèi)型的語(yǔ)言中,這可能主要適用于模塊而不是特定的代碼片段。在 JS 中創(chuàng)建封裝和只允許在某些地方進(jìn)行擴(kuò)展有一些技巧,但通常你可以在任何地方插入任何你想要的東西,所以我不擔(dān)心它。
添加回答
舉報(bào)
0/150
提交
取消