我将一个setTimeout函数推入一个数组,当我在console.log(arr)时,arr的值是一个整数。任何人都可以为我解释!谢谢!代码是这样的:
var arr=[];
arr.push(
setTimeout(function(){
$(selector).text(something);
});
);
console.log(arr); // [2]
另外,我不明白将函数推入数组的目的!任何人都可以帮助我。提前谢谢!
答案 0 :(得分:2)
问题是因为您放入数组的值是从setTimeout()
返回的计时器的标识符,恰好是整数。 不包含输入的jQuery对象。
您需要重新排列逻辑,以便push()
在内setTimeout()
:
var arr = [];
setTimeout(function() {
arr.push($(selector).text(something));
console.log(arr);
}, 1000);
答案 1 :(得分:0)
我将setTimeout函数推送到数组中,
不,你没有。您将结果 - 返回值 - 推送到数组中调用setTimeout
函数。
另外,我不明白将功能推入arra的目的
例如,您可能希望根据某个索引的值调用函数,或者您正在创建要执行的堆栈或操作队列。
答案 2 :(得分:0)
最好的方法是使用objects
,您可以将功能与对象的关键字相关联:
var obj={};
obj.testFn = function(){
setTimeout(function(){
alert('invoked');
//$(selector).text(something);
},2000);
}
obj.testFn();
console.log(obj);

答案 3 :(得分:0)
setTimeout返回超时ID,因此如果您想再次停止该超时,可以使用clearTimeout(id)来实现。
您不会在数组中推送函数,而是执行函数的结果(在这种情况下是由setTimeout生成的超时ID)。
我也不明白你为什么要把它推到一个数组中,因为开发者你应该知道它....!