我对JavaScript的窗口对象有点困惑。对于初学者来说,可以考虑以下两个声明:窗口对象的全局变量和属性之间有什么区别?
var imglobal = "I'm Global";
window.imglobal = "I'm Global";
据我了解,这将是完全一样的(是吗?)它可以作为两个“imglobal”或“window.imglobal”访问案例。我不明白为什么,VAR声明当地变量,下面不工作:
function imafunc() {
var imavar = "I'm a variable";
window.alert(imafunc.imavar);
}
那么,为什么下面?
var imavar = "I'm a variable";
window.alert(window.imavar);
我在使用GWT时偶然发现了这个;它似乎总是必须在那里显式引用窗口对象($ wnd),可能是因为它不是“真正的”窗口对象,而是某种类型的沙箱。
它会变得更加混乱与功能,我知道三种方式来声明它们:
var myfunc = function() { window.alert("Hello, World!"); }
window.myfunc = function() { window.alert("Hello, World!"); }
function myfunc() { window.alert("Hello, World!"); }
是否有这三种方法之间的技术区别?
这解释了为什么“窗口”是可选的,谢谢。 – theone 2010-07-18 08:53:57
+1。八九不离十。比较准确地说,作用域链上的最后一个对象总是* global *对象;在浏览器中,'window'充当全局对象,但在其他环境中并非如此。 – 2010-07-18 13:06:57
@Tim:谢谢你澄清。我知道*全球*的对象,但我不是100%肯定。 – 2010-07-18 13:11:57