将参数传递给回调函数的正确方法是什么?

这是一个工作示例。如您所见,我正在调用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)

})


慕妹3146593
浏览 134回答 1
1回答

Smart猫小萌

将值传递给函数就可以了,除非元素的高度随时间变化。如果它发生变化,您将需要在每次调用事件处理程序时重新计算高度。如果没有,您可以只传递值,因为无论如何它总是使用相同的值。另外,这一行:&nbsp;let&nbsp;elemHeight&nbsp;=&nbsp;callback如果callback是一个函数,这实际上并不调用回调,它只是将函数分配给一个新变量。如果你想elemHeight获得返回值,你需要这样做:&nbsp;let&nbsp;elemHeight&nbsp;=&nbsp;callback()&nbsp;//&nbsp;<==&nbsp;Notice&nbsp;the&nbsp;parenthesis如果它是一个值,您可能想要更改名称。至于开闭原则,我认为在 JS 作为一种动态的、弱类型的语言中,这可能主要适用于模块而不是特定的代码片段。在 JS 中创建封装和只允许在某些地方进行扩展有一些技巧,但通常你可以在任何地方插入任何你想要的东西,所以我不担心它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript