问题一:var out=function(){}与  function out(){}区别

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><script type="text/javascript">
var change=function(obj){
         var obj=document.getElementById(obj);
 obj.style.backgroundColor="#CFDBEC";
 obj.onmouseout=out
  var out=function(){
  obj.style.backgroundColor="#A9EE23";
 }
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
#apDiv1 {
position:absolute;
width:200px;
height:115px;
z-index:1;
border:1px solid #C0C;
}
</style>
</head>
<body>
<div id="apDiv1" onclick="change('apDiv1')"></div>
</body>
</html>
这种情况下out函数不能执行,应该是好没有加载到out所以out没有定义,为什么改成function out(){}的形式就可以运行?
或者
我将obj.onmouseout=out改成 obj.onmouseout=function(){out()}也可以为什么,这两种写法解释上有什么区别?