首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在setTimeout回调函数中使用参数?

如何在setTimeout回调函数中使用参数?
EN

Stack Overflow用户
提问于 2015-06-11 23:30:19
回答 1查看 363关注 0票数 0

我想要显示消息,然后使用setTimeout函数隐藏它们。所以我希望传递给setTimeout函数的函数接受一个参数,隐藏消息,这样我就可以使用一个泛型回调函数。我尝试了下面的代码,但是在回调执行时label参数是未定义的。

代码语言:javascript
运行
复制
var label = $('.js-a-label');
label.html('the message!');
setTimeout(hideMessage(label), 5000);

function hideMessage(label) {
  label.html('');
}
EN

Stack Overflow用户

发布于 2015-06-11 23:32:23

在该代码中,您可以只使用label,因为您的函数关闭了它:

代码语言:javascript
运行
复制
var label = $('.js-a-label');
label.html('the message!');
setTimeout(hideMessage, 5000);
function hideMessage() {
  label.html('');
}

在一般情况下,当您调用的函数没有关闭您希望它使用的信息时,您有几个选择:

  1. 添加一个执行以下操作的函数:

var label = $('.js-a-label');label.html(‘消息!’);setTimeout(function() { hideMessage(label);},5000);

  • 使用Function#bind (ES5+)

var label = $('.js-a-label');label.html(‘消息!’);setTimeout(hideMessage.bind(null,label),5000);

Function#bind返回一个新函数,当调用该函数时,将使用特定的this值调用原始函数(我们不需要该值,所以我只使用了上面的null )以及您给出的任何参数null $.proxy,它的作用与Function#bind大致相同:

var label = $('.js-a-label');label.html(‘消息!’);setTimeout($.proxy(hideMessage,null,label),5000);

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30785147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档