什么';调用JavaScript函数的正确方法是什么?

什么';调用JavaScript函数的正确方法是什么?,javascript,function,dom,Javascript,Function,Dom,在下面的代码中,调用函数writeMessage,不带括号。不过,它工作得很好,但在javaScript中调用函数是正确的方法还是最好使用括号和writeMessage() window.onload = writeMessage; function writeMessage() { document.write("Hello World"); } 这已经是正确的了 您不需要括号,因为您只是将函数存储在window.onload,而不是自己调用它。window.onload=writ

在下面的代码中,调用函数
writeMessage
,不带括号。不过,它工作得很好,但在javaScript中调用函数是正确的方法还是最好使用括号和
writeMessage()

window.onload = writeMessage;

function writeMessage()
{
    document.write("Hello World");
}

这已经是正确的了


您不需要括号,因为您只是将函数存储在
window.onload
,而不是自己调用它。

window.onload=writeMessage不是一个呼叫-它是一个分配。将
writeMessage
函数指定为
窗口
对象的
onload
字段。实际调用(在内部)作为
window.onload()
执行,在您的情况下,这相当于
writeMessage()

在下面的代码中,调用函数writeMessage时不带括号

事实上,它不是。代码

window.onload = writeMessage;
不调用函数。它将函数分配给
窗口的
onload
属性。在浏览器中加载页面的部分过程是在加载过程完成后启动分配给该属性(如果有)的函数

如果你写

window.onload = writeMessage();
您要做的是调用
writeMessage
并将调用结果分配给
window.onload
,就像
x=foo()


请注意,您实际引用的代码在页面加载时执行
文档。write
将删除刚刚加载的页面,并将其替换为文本“Hello world”,因为在页面加载完成后调用
document.write
时,它意味着
文档。open
,这将清除页面。(试试看;源代码。)在现代网页和应用程序中,您几乎从不使用
文档。编写
,但在极少数情况下,必须使用在加载页面时运行的代码(例如,不迟于加载)。

使用
()
执行函数

当你写作时

window.onload=writeMessage


实际上,您设置了一个委托(
指向要执行的函数的指针),当
onload
事件发生时,这是否也适用于以下代码
@sandbox:不。在HTML中的
onclick
属性中编写的内容实际上是函数体,因此如果您想在那里调用
writeMessage
,则需要调用
writeMessage
(例如,
onclick=“writeMessage();”
)。但是避免在标记中使用
onXYZ
属性,有更好的方法来连接东西。@T.J.Crowder如果onclick在javascript函数中。。。?例如:
document.getElementById(“重定向”).onclick=myFunction()
@sandbox:在这种情况下,您不需要括号,因为它与原来的相同。您应该区分对象属性和DOM属性。@sandbox:在JavaScript代码中分配时没有参数。同样,将属性文本视为函数体。因此,如果您有
函数eventHandler(){/*…您的代码在这里…*/}
,您会在其中放入什么来调用您的函数?但在JavaScript代码中,当您分配给属性(如
onclick
)时,您将分配一个函数引用,以便稍后调用。如果您包含了paren,那么您就可以立即调用它(同样,就像您调用函数并使用其返回值的任何其他时间一样)。与许多事情一样,在JavaScript中,没有“正确”的方法来执行某些操作。做同一件事可以有很多方法,每种方法都具有相同的“正确性”。比是否使用括号更重要的是,您应该始终将开头的花括号与JavaScript中的函数声明放在同一行,这与其他语言不同,但在这个意义上是“正确的”