当我尝试为我正在做的某些动画填充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导致输出,而不是第一次推送中的内联函数?
答案 0 :(得分:6)
因为你正在打电话。
funcArray.push(testFunc());
调用 testFunc,然后将该调用的结果推送到funcArray。您可能需要funcArray.push(testFunc);
(请注意省略的()
),它只是将函数引用推送到该数组。
答案 1 :(得分:1)
因为你在funcArray.push(testFunc());
执行它...你想要的是funcArray.push(testFunc);
因为testFunc()
执行了函数,接受返回并将它推送到数组,而{{1}把实际的功能推到了。