js变量作用域及可访问性的探讨(4) new foo();document.write(_foo+"<br>");对调成document.write(_foo+"<br>");new foo();系统将提示 "_foo 未定义"。 2、如果定义了一个和全局变量同名的局部变量属性,如下:
1 2 3var copyright = "3zfp owned"; 4var foo =function(fooInfo) 5{ 6 var copyright = fooInfo; //同名变量 7 this.showInfo = function() 8 { 9 document.write(copyright+"<br>");10 }11}12new foo("foo test").showInfo();13document.write(copyright+"<br>");执行代码,将得到如下结果:3zfp ownedfoo test
原因是由于function 是在编译期间完成变量的定义,也就是foo内部的copyright的定义是在编译期间完成的,其作用域只在foo对象内有效,而与外部定义的全局变量copyright无关。