这是一个工作示例。如您所见,我正在调用setElemHeight函数并返回一个来自getElemHeight. 但我认为传递价值而不是功能是一种不好的做法。选项 1)我可以将它包装在匿名函数中,如下所示:function () { getElemHeight('.map-svg') }选项 2)我可以在setElemHeight函数内部调用它并在那里传递参数,但我认为它会破坏开放封闭原则。我的问题是:将参数传递给回调函数的正确方法是什么?谢谢。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贡献1911条经验 获得超7个赞
将值传递给函数就可以了,除非元素的高度随时间变化。
如果它发生变化,您将需要在每次调用事件处理程序时重新计算高度。如果没有,您可以只传递值,因为无论如何它总是使用相同的值。
另外,这一行:
let elemHeight = callback
如果callback
是一个函数,这实际上并不调用回调,它只是将函数分配给一个新变量。
如果你想elemHeight
获得返回值,你需要这样做:
let elemHeight = callback() // <== Notice the parenthesis
如果它是一个值,您可能想要更改名称。
至于开闭原则,我认为在 JS 作为一种动态的、弱类型的语言中,这可能主要适用于模块而不是特定的代码片段。在 JS 中创建封装和只允许在某些地方进行扩展有一些技巧,但通常你可以在任何地方插入任何你想要的东西,所以我不担心它。
添加回答
举报
0/150
提交
取消