当我尝试填充正在执行的某些动画的JS数组时,我遇到了这个问题。当我单击网页中的链接以进行测试时,将调用以下Javascript函数:
function testing()
{
var funcArray = [];
var testFunc = function(){console.log("test function");}
funcArray.push(function(){console.log("hello there");});
funcArray.push(testFunc());
}
执行此操作后,我将在JS控制台中看到“测试功能”,但没有出现在“你好”中。为什么推送预定义的testFunc会导致输出,而第一次推送不会导致内联函数?
最佳答案
因为你在打电话。
funcArray.push(testFunc());
调用testFunc,然后将调用结果推入funcArray。您可能需要
funcArray.push(testFunc);
(注意省略的()
),它只是将函数引用推送到该数组。