使用括号()后我的函数没有运行?

时间:2014-11-24 15:47:02

标签: javascript function

我的第一个代码正在工作,但是在myFunction之后添加()括号后第二个代码无效。是什么原因?

代码1

<script type="text/javascript">
function myFunction(){
    var status = document.getElementById("status");
    status.innerHTML = "The page finishing loading made my function run.";
}
window.onload = myFunction;
</script>
<h3 id="status"></h3>

代码2

<script type="text/javascript">
    function myFunction(){
        var status = document.getElementById("status");
        status.innerHTML = "The page finishing loading made my function run.";
    }
    window.onload = myFunction();
    </script>
    <h3 id="status"></h3>

2 个答案:

答案 0 :(得分:1)

在第一种情况下,您将分配将在回调中使用的函数的引用

在您的第二种情况下,您指定function 返回的值,在这种情况下undefined,因为您不是window.onload撤回任何东西。

{{1}}或任何事件处理程序,期望在回调时执行函数引用。

答案 1 :(得分:0)

window.onload是一个事件处理程序,必须是一个函数,而不是函数的结果。当然你可以留下括号,但是这样你的函数myFunction应该返回另一个函数

<script type="text/javascript">
function myFunction(){
    return function() {
        var status = document.getElementById("status");
        status.innerHTML = "The page finishing loading made my function run.";
    }
}
window.onload = myFunction();
</script>
<h3 id="status"></h3>