将函数推入数组。为什么数组的值是整数?

时间:2017-08-31 13:33:18

标签: javascript jquery

我将一个setTimeout函数推入一个数组,当我在console.log(arr)时,arr的值是一个整数。任何人都可以为我解释!谢谢!代码是这样的:

var arr=[];
arr.push(
 setTimeout(function(){
 $(selector).text(something);
 });
);
console.log(arr); // [2]

另外,我不明白将函数推入数组的目的!任何人都可以帮助我。提前谢谢!

4 个答案:

答案 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)。

我也不明白你为什么要把它推到一个数组中,因为开发者你应该知道它....!