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

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

oDiv.onmouseover=startMove(0);

而这样写为什么就可以?

oDiv.onmouseover=function (){
       startMove(0);
    }

你得搞清楚类型

这是一个函数

startMove;

这是一个函数

function (){
       startMove(0);
}

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

startMove(0);

再理一下这个语法

xxx.onmouseover = 函数类型,  正确
xxx.onmouseover = undefined/number/string/其他类型 ,  错误

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

//定义函数
function startMove(){

}
xxx.onmouseover = startMove;//将函数赋给xxx的onmouseover事件

等价于:

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

}

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