原文地址:http://www.w3cfuns.com/forum.php?mod=viewthread&tid=5591696&fromuid=1439

 

总结:

fn是函数的名字,可以用它来引用函数
加上()就是运行函数,每个函数运行后都会有返回值,如果你没有在fn中特别写上return什么的话,会返回undefined
obj.onclick是对obj的onclick属性赋值
obj. 就是把函数引用赋值给onclick属性
obj. 是把函数fn的运行结果赋值给onclick属性,在你的代码里,没有写return,那么fn运行后返回undefined,所以这里就是obj.οnclick=undefined;
这个赋值过程是不会报错的,但当click事件被触发时,赋值到onclick的属性值会被执行,大概就是obj.onclick()这么个过程(我猜测),所以把undefined当做函数运行是会报错的。