我希望我问的是正确的。
我有 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/