Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将函数推入数组。为什么数组的值是整数?_Javascript_Jquery - Fatal编程技术网

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

Javascript 将函数推入数组。为什么数组的值是整数?,javascript,jquery,Javascript,Jquery,我将setTimeout函数推入数组中,当我输入console.log(arr)时,arr的值是一个整数。谁能给我解释一下!谢谢代码如下所示: var arr=[]; arr.push( setTimeout(function(){ $(selector).text(something); }); ); console.log(arr); // [2] 另外,我不理解将函数推入数组的目的!有人能帮我吗。提前谢谢 问题是因为您输入到数组中的值是从setTimeout()返回的计时器标识符,

我将setTimeout函数推入数组中,当我输入console.log(arr)时,arr的值是一个整数。谁能给我解释一下!谢谢代码如下所示:

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

另外,我不理解将函数推入数组的目的!有人能帮我吗。提前谢谢

问题是因为您输入到数组中的值是从
setTimeout()
返回的计时器标识符,它恰好是一个整数。它不是包含输入的jQuery对象

您需要重新安排逻辑,以便
push()
位于
setTimeout()内。

我将setTimeout函数推入数组

不,你没有。将调用
setTimeout
函数的结果(其返回值)推送到数组中

另外,我不理解将函数推入arra的目的


例如,您可能希望根据某个索引的值调用函数,或者正在创建要执行的堆栈或操作队列。

最好的方法是使用
对象
将函数与对象的键关联:

var obj={};
obj.testFn=函数(){
setTimeout(函数(){
警报(“已调用”);
//$(选择器)。文本(某物);
},2000);
}
obj.testFn();

控制台日志(obj)setTimeout返回一个超时id,所以如果您想再次停止该超时,可以使用clearTimeout(id)来完成

您不会在数组中推送函数,而是推送函数执行的结果(在本例中是由setTimeout生成的超时id)


我也不明白你为什么要把它放在一个数组中,作为开发者你应该知道它

您没有将函数推入数组。您正在调用
setTimeout()
并将返回值推送到数组中。您没有推送函数,而是推送setTimeout句柄。因为
setTimeout()
的返回值是整数<代码>“我不理解将函数推入数组的目的!”
-如果您想要一个函数数组,您可以这样做。但是这段代码并不是这么做的。$(选择器)。text(某物)会更改选择器的文本,那么为什么要在数组中按它?这将返回包含所选对象的jQuery对象。希望将该对象引用存储在数组中以供以后使用是有效的,尽管OP不清楚他以后想用它做什么谢谢!我之所以将其推送到数组中,是为了稍后使用clearTimeout()!
var arr = [];
setTimeout(function() {
  arr.push($(selector).text(something));
  console.log(arr);
}, 1000);