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