ajax回调函数的疑问
高洛峰
高洛峰 2016-11-09 13:23:20
0
2
605

xmlhttprequest.onreadystatechange = myFunction;

为什么不能写成 xmlhttprequest.onreadystatechange = myFunction();

具体一点,谢谢

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(2)
代言

xmlhttprequest.onreadystatechange = myFunction;
//把myFunction函数作为一个对象赋值给onreadystatechange.

xmlhttprequest.onreadystatechange = myFunction()
//把myFunction函数的返回值赋值给onreadystatechange. 如果它的返回值是个函数的话,当然可以这么用。


三叔

使用myFunction()那么函数就立即执行并且返回值了,明显不符合我们的目的。我们的目的是为onreadystatechange 事件注册一个处理函数,它在事件触发时执行。

1.加了括号的表示调用,它会被执行。函数执行后返回值(可能为undefined)。
2.没有加括号的是函数的引用赋值,只是将一个函数当作变量赋值给xmlhttprequest.onreadystatechange,这时候函数没有被调用,也没有被执行,等待事件触发时再执行。

JavaScript中的回调都是要使用函数引用,看代码更容易理解:

var myFunc=function(){/code/}
window.onload=myFunc;
//等同于:
window.onload=function(){/code/}


Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template