javascript - 请问为什么这两种方式调用函数一个有效果另一个没有效果?//注释中是另一种方式
ringa_lee
ringa_lee 2017-04-11 10:00:39
[JavaScript讨论组]




Clear float


详情



ringa_lee
ringa_lee

ringa_lee

全部回复(4)
阿神

op.onmouseover 的值是处理 onmouseover 事件的事件处理函数。

startMove(1) ,因为函数名后面加了 () ,所以函数立即执行了,并且执行结果的返回值是 undefined。所以
op.onmouseover = startMove(1) 就等同于 op.onmouseover = undefined。所以无效。

PHPz

注释的代码,绑定上去的是startMove()方式的返回值;看下下面的代码,同样的道理;

大家讲道理

op.onmouseover=startMove(1);
op.onmouseout=startMove(0);
**1、startMove(1)、startMove(0) 这两个函数的返回值均为 undefined
2、javascript没有重载,在相同的作用域里,后面的startMove(0)、会覆盖前面的startMove(1)**

PHP中文网

绑定匿名函数:

op.onmouseover=function(event){
    startMove(1);
}
op.onmouseout=function(event){
    startMove(0);
}

绑定外部通用函数,

op.onmouseover=startMove;
op.onmouseout=startMove;

楼主注释的写法,相当于执行函数

op.onmouseover=startMove(1);
op.onmouseout=startMove(0);

下面这种相当于动态调用函数(有点eval的意思),因此不会传入event对象,同时,如果用this指向的是window,不再是触发事件的dom对象。

<p id="p1" onmouseover="startMove(0)" onmouseout="startMove(1)">
    <span id="share">详情</span>
</p>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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