在函数中将属性作为参数发送

Send property as argument in function

提问人:nb_nb_nb 提问时间:9/7/2023 更新时间:9/8/2023 访问量:24

问:

我有一个引导警报,它被调用了几次不同的时间,所以我想编写一个函数来重用。我希望警报在 3 秒后消失并执行一些操作。所以在我的 setTimeout 中,我想做类似 or 的事情。location.reload()textbox.value=""

我的代码:

const alerts = (msg, todo) => {
  alert.classList.remove("d-none");
  document.getElementById("msg").innerHTML = msg;
  setTimeout(() => {
    alert.classList.add("d-none");
    todo;
  }, 3000);
};

alerts("message1", location.reload());
alerts("message2", (textbox.value=""));

我的第二个论点没有被调用。我该解决吗?

JavaScript 函数 ecmascript-6 参数 setTimeout

评论

0赞 Sergey Sosunov 9/7/2023
好吧,你可以传递一个实际的函数,比如 .并在警报函数中调用它。alerts("message1", () => location.reload());todo()
0赞 nb_nb_nb 9/7/2023
@SergeySosunov,不知道你的意思
1赞 Sergey Sosunov 9/8/2023
您正在调用具有字符串类型的第一个参数的函数,第二个参数的类型(由 或 返回的任何内容。你不是在传递函数、回调,而是在就地评估这些函数,并将它们的“返回”结果传递给你的函数。如果你想执行一些作为变量传递的东西 - 传递一个真正的 ,喜欢,然后用 而不是 调用它。alertslocation.reload()(textbox.value="")alertsfunctiontodofunctions() => {someCodeHere}functiontodo()todo;
0赞 gre_gor 9/11/2023
这回答了你的问题吗?将 JavaScript 函数作为参数传递

答:

1赞 Prerak Sola 9/8/2023 #1

正如 Sergey 在评论中建议的那样,您可以使用回调函数来实现您正在尝试执行的操作。

在函数中调用时,将执行您作为回调的一部分提供的任何内容。todo()alerts

例:

const alerts = (msg, todo) => {
  console.log(msg)
  setTimeout(() => {
    todo();
  }, 3000);
};

alerts("message1", () => {
  //location.reload()
  console.log("message 1 callback")
});

alerts("message2", () => {
  //textbox.value = ""
  console.log("message 2 callback")
});