我正在观看一个关于AJAX的视频教程,那个人写了一些东西并称之为函数,但他没有调用它。
我有点困惑,这是他正在做的事情的照片:
你不需要()?
答案 0 :(得分:2)
是的,你需要括号来执行一个函数。
xmlHttp.onreadystatechange = handleServerResponse;
不执行handleServerResponse
,只需将其分配给xmlHttp.onreadystatechange
。
答案 1 :(得分:2)
那是分配一个函数指针(那里的术语有点松散吗?)。 onreadystatechange
上的xmlHttp
函数现在将指向函数handleServerResponse
。放()
会执行handleServerResponse
函数,并将返回值分配给onreadystatechange
。
答案 2 :(得分:0)
您可以使用括号,也可以不使用括号,具体取决于您想要做什么。
如果要传递对函数的引用,以便以后某些其他代码可以调用该函数,则不要使用括号。这就是您的特定代码示例中发生的事情,并且是将引用传递给现在未执行但稍后可以执行的函数的正确且唯一的方法。
此:
xmlHttp.onreadystatechange = handleServerResponse;
只是分配对handlerServerResponse
函数的引用,以便将来在实际执行ajax调用时可以调用该函数。这是针对此特定用途执行此操作的正确方法。
如果你想现在执行一个函数而不只是给它一个引用,那么你必须使用括号。
如果你这样做了:
xmlHttp.onreadystatechange = handleServerResponse();
然后,它将执行函数handlerServerResponse()
NOW并将函数的返回值赋给xmlHttp.onreadystatechange
,这不是你想要的。