gpt4 book ai didi

javascript - 全局变量和窗口对象的属性有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:54 24 4
gpt4 key购买 nike

我对 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 there),可能是因为它不是“真正的”窗口对象,而是某种沙箱。

函数会变得更加困惑,我知道三种声明函数的方法:

var myfunc = function() { window.alert("Hello, World!"); }

window.myfunc = function() { window.alert("Hello, World!"); }

function myfunc() { window.alert("Hello, World!"); }

这三种方法在技术上有什么区别吗?

最佳答案

关于你的观察:

I stumbled across this when using GWT; it appears one always has to refer to the window object ($wnd there) explicitly there, probably because it's not the "real" window object but some kind of sandbox.

在 GWT JSNI 中,您始终需要在变量和函数前加上 $wnd 前缀的原因是确保您从窗口范围(主机页面)访问变量。这是因为 JSNI 在 iframe 中运行,因此没有 $wnd 限定符的任何变量都将在 iframe 范围内解析,而不是您想要的窗口范围。

关于javascript - 全局变量和窗口对象的属性有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3274856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com