当我将它推送到JS数组时,为什么我的函数会执行?

时间:2015-07-18 20:46:09

标签: javascript jquery arrays function

当我尝试为我正在做的某些动画填充JS数组时遇到了这个问题....当我点击我的网页中的链接进行测试时,调用了以下Javascript函数:

function testing()
{
    var funcArray = [];
    var testFunc = function(){console.log("test function");}

    funcArray.push(function(){console.log("hello there");});
    funcArray.push(testFunc());
}

执行此操作时,我会在JS控制台中显示“test function”,但不会“hello there”。为什么推送预定义的testFunc导致输出,而不是第一次推送中的内联函数?

2 个答案:

答案 0 :(得分:6)

因为你正在打电话。

funcArray.push(testFunc());

调用 testFunc,然后将该调用的结果推送到funcArray。您可能需要funcArray.push(testFunc);(请注意省略的()),它只是将函数引用推送到该数组。

答案 1 :(得分:1)

因为你在funcArray.push(testFunc());执行它...你想要的是funcArray.push(testFunc);因为testFunc()执行了函数,接受返回并将它推送到数组,而{{1}把实际的功能推到了。