Javascript 使用括号()后,我的函数是否未运行?

Javascript 使用括号()后,我的函数是否未运行?,javascript,function,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.on

在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>

函数myFunction(){
var status=document.getElementById(“状态”);
status.innerHTML=“页面加载完成使我的函数运行。”;
}
window.onload=myFunction;
代码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>

函数myFunction(){
var status=document.getElementById(“状态”);
status.innerHTML=“页面加载完成使我的函数运行。”;
}
window.onload=myFunction();

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

在第二种情况下,您分配的是
函数返回的值,在这种情况下
未定义
,因为您没有返回任何内容


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>

函数myFunction(){
返回函数(){
var status=document.getElementById(“状态”);
status.innerHTML=“页面加载完成使我的函数运行。”;
}
}
window.onload=myFunction();

实际上它正在运行,但不立即加载
onload-检查控制台,您将看到在未定义上设置属性的错误。