JS中,setInterval和setTimeout函数都可以用来定时执行某个函数,但是它们都有一个共同的问题,就是无法直接传递带参数的函数。本攻略将会介绍两种解决方案。
方案一:使用匿名函数
可以通过使用匿名函数来间接传递参数,代码示例如下:
// 定义一个带有参数的函数
function myFunction(param1, param2) {
console.log(param1, param2);
}
// 定义一个无参的匿名函数,在其中调用带参的函数
setInterval(function() {
myFunction('hello', 'world');
}, 1000);
上述代码中,我们在setInterval函数中传入了一个无参的匿名函数,而在这个匿名函数中调用了带参数的myFunction函数,从而达到向setInterval中传递带参数的函数的目的。
方案二:使用bind
可以使用bind函数来创建一个新的函数,这个新函数是原函数的一个绑定版本,并且可以绑定预定义的参数。代码示例如下:
// 定义一个带有参数的函数
function myFunction(param1, param2) {
console.log(param1, param2);
}
// 通过bind创建一个新函数,该新函数绑定了预定义的参数
var myFunctionWithParams = myFunction.bind(null, 'hello', 'world');
// 在setInterval中调用新函数即可
setInterval(myFunctionWithParams, 1000);
上述代码中,我们使用了bind函数来创建一个新函数myFunctionWithParams,这个新函数绑定了预定义的参数,并且可以直接在setInterval函数中使用。
需要注意的是,bind函数的第一个参数是绑定的上下文,指定为null即可。
通过上述两种方式,我们可以实现向setInterval或setTimeout中传递带参数的函数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中setInterval、setTimeout不能传递带参数的函数的解决方案 - Python技术站