当我尝试填充正在执行的某些动画的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);(注意省略的()),它只是将函数引用推送到该数组。

09-10 17:27