关于js作用域的困惑

关于js作用域的疑惑var name abcfunction testGlobal() {alert(name) //2处:undefinedvar name de

关于js作用域的疑惑

var name = "abc"function testGlobal() {alert(name); //2处:undefinedvar name = "def";alert(name); //3处:defalert(this.name); //4处:abcthis. name = "ghi";alert(this.name); //5处:ghi}alert(name); //1处:abctestGlobal();alert(name); //6处:ghi

如上面的代码,在这里发帖,主要是个人觉得这个版块要比问答版块的活跃,function中的this为什么指的是widow对象,还有其他的几处具体是怎么来的,我已经作了标记,那几处的原因?
求大牛解释!