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

after using parenthesis () my function not running?

本文关键字:函数 我的 运行      更新时间:2023-09-26

我的第一个代码工作,但在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>

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

在第二种情况下,您分配function返回的值,在这种情况下undefined,因为您没有重新执行任何内容。

window.onload或任何事件处理程序都期望在回调时执行函数引用。

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>