将参数与setInterval一起使用可反转这些参数
Using parameters with setInterval reverses them
我一辈子都无法理解这里发生了什么。我正试图在setInterval中使用function.bind来传递一些变量。现在只传递了一个参数,并且它正在替换第一个参数。我想我可能是滥用了bind,或者说.bind和jquery的.bind冲突了?在这一点上我一无所知。
请打开控制台,看看当你点击div.时会发生什么
谢谢。
http://jsfiddle.net/v2zc6mtm/5/
var testA, testB;
function myFunc(testA, testB) {
console.log("testA is : " + testA + " testB is : " + testB);
}
myInterval = setInterval(myFunc.bind(testA, testB), 5000);
$('#myDiv').click(function () {
testA = "foo";
testB = "bar";
myFunc(testA, testB);
clearInterval(myInterval);
myInterval = setInterval(myFunc.bind(testA, testB), 5000);
});
您错过了bind
的this
参数,因此您应该编写以下内容:
myInterval = setInterval(myFunc.bind(this, testA, testB), 5000);
this
可以是任何JS对象。这对于函数的call
和apply
是相同的。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
这是你编辑过的小提琴:http://jsfiddle.net/v2zc6mtm/6/
绑定不会像你认为的那样工作。Bind用于将this
注入到执行上下文中。如果this
不是问题,则不用于传递参数。为了传递参数,您将希望使用像以下这样的匿名函数
var testA, testB;
console.log = function(arg){$("#console").html(arg);}//used only for demo snippet
function myFunc(testA, testB) {
console.log("testA is : " + testA + " testB is : " + testB);
}
myInterval = setInterval(function(){ myFunc(testA, testB); }, 5000);
$('#myDiv').click(function () {
testA = "foo";
testB = "bar";
myFunc(testA, testB);
clearInterval(myInterval);
myInterval = setInterval(function(){ myFunc(testA, testB); }, 5000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="border:1px solid black;padding:8px">
<h3>Console</h3>
<div id="console"></div>
</div>
<div id="myDiv">Click</div>
相关文章:
- 使用express.具有多个url和可选参数的Router()
- 绑定到 x 可编辑的成功函数未使用正确的参数执行
- 具有可选'/'s和查询参数
- DOJO声明中可选className参数的用途是什么
- 可选参数 JavaScript 技巧
- JQuery选择器中的可选参数
- 基于查询参数的可选承诺步骤
- 如何停止Angular UI路由器将可选参数从一个路由传递到完全不同的路由
- 是 Javascript 中可用于匿名调用函数的参数计数
- Angular ui路由器可选url参数
- 记录中间功能可选参数
- Knockout:可以在没有参数的情况下调用可观察的扩展器
- 复杂数据作为可选的javascript函数参数
- JS:将单参数函数转换为可链接函数
- 为什么AMD以与javascript性质相反的顺序定义其可选参数
- 使用可选参数和默认模型定义路由
- 尝试制作可重用的代码,使用函数参数填充名为 target 的变量的区域
- JavaScript 库如何忽略某些参数,或使某些函数参数“可选”
- 将参数与setInterval一起使用可反转这些参数
- Javascript使用for循环在参数中反转任何长度的数字