为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2023-02-17 16:05:02
这是一个工作示例。如您所见,我正在调用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 中创建封装和只允许在某些地方进行扩展有一些技巧,但通常你可以在任何地方插入任何你想要的东西,所以我不担心它。


查看完整回答
反对 回复 2023-02-17
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号