javascript - ajax回调函数的疑问
ringa_lee
ringa_lee 2017-04-10 12:43:14
[JavaScript讨论组]

xmlhttprequest.onreadystatechange = myFunction;
为什么不能写成 xmlhttprequest.onreadystatechange = myFunction();
具体一点,谢谢

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
阿神

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

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

PHP中文网

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

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

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

var myFunc=function(){/*code*/}
window.onload=myFunc;
//等同于:
window.onload=function(){/*code*/}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号