/*lemon*/
2020-01-06 17:00
采纳率: 100%
浏览 296

为什么函数调用不能直接写在事件等号后面,而要写在匿名函数里?

这样写参数程序无法运行出来

oDiv.onmouseover=startMove(0);

而这样写为什么就可以?

oDiv.onmouseover=function (){
       startMove(0);
    }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • churuxu 2020-01-06 18:46
    已采纳

    你得搞清楚类型

    这是一个函数

    startMove;
    

    这是一个函数

    function (){
           startMove(0);
    }
    

    这是一个函数调用,不是一个函数,startMove函数返回什么类型,这就是什么类型

    startMove(0);
    

    再理一下这个语法

    xxx.onmouseover = 函数类型,  正确
    xxx.onmouseover = undefined/number/string/其他类型 ,  错误
    
    点赞 评论
  • 'ゞBibo。 2020-01-06 17:06

    直接写的话,函数startMove()传递参数(0),这个0是无法传递的,因为事件处理函数是由系统调用的,系统调用的时候会传入一个事件对象event参数。

    点赞 评论
  • LonelyHobo 2020-01-07 16:47
    //定义函数
    function startMove(){
    
    }
    xxx.onmouseover = startMove;//将函数赋给xxx的onmouseover事件
    

    等价于:

    //将匿名函数赋给xxx的onmouseover事件
    xxx.onmouseover = function(){
    
    }
    

    对于函数的理解,可以浏览这个文档(JavaScript 函数调用):
    https://www.runoob.com/js/js-function-invocation.html

    点赞 评论

相关推荐 更多相似问题