javascript - 有没有办法将变量传递给回调函数而不用将其包装在另一个函数中?

标签 javascript jquery

我希望我问的是正确的。

我有 jQuery 行:

$("main").load("link.html", runFunction);

而且效果很好。但是现在我想将一个变量传递给函数runFunction,但是做

$("main").load("link.html", runFunction(myvar));

不起作用,因为它会立即被调用。我知道我能做到

$("main").load("link.html", function() {runFunction(myvar)});

但我想知道是否有任何其他方法可以在没有额外包装函数的情况下将变量发送到 runFunction。

最佳答案

在幕后,创建一个新函数是不可避免的,因为您传入的“绑定(bind)”参数绑定(bind)到某个范围,并且您将调用的函数将在不同 范围。为此,您需要一个闭包,您可以使用内联匿名函数创建它。

也就是说,JavaScript 通过 Function.prototype.bind 调用使这更容易。查看bind() on MDN .

bind 允许您创建leading 绑定(bind)参数(即,您不能使用它来将 second 参数绑定(bind)到变量,但不能首先)。

$("main").load("link.html", function() {runFunction(myvar)});

成为

$("main").load("link.html", runFunction.bind(window, myvar)});

请注意,您传递给 bind 的第一个参数是 thisArg,它是将与 this 参数关联的 JavaScript 对象在函数体中。

关于javascript - 有没有办法将变量传递给回调函数而不用将其包装在另一个函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290456/

相关文章:

javascript - 如何使用 JSON 在谷歌地图中制作动态标记?

javascript - Firefox 中 ASP 回发后 jQuery 效果消失

javascript - 我应该/如何清除 mousemove JQuery 事件监听器?

javascript - 区分jquery选择器中的文本和复选框

javascript - 为ajax动态创建URL参数

javascript - 带有闭包编译器的 AngularJS - 简单优化失败

javascript - Bootstrap tab.js 中的嵌套列表 [事件类未删除]

jquery - 如何在很长的html表格中隐藏列

javascript - 设置表格内文本区域的高度

javascript - 嵌套 promise 工作时无法获取 $q.all - 等待全部