使一个简单的私有变量全局化 - 访问主体元素


确实

是一个初学者问题,但在 stackoverflow 上找不到任何实际解决这个问题的地方,所以任何帮助将不胜感激。我只想定义一个私有变量,然后将其返回到全局范围。

在此示例中,我可以在刷新页面后在 JS 控制台中访问 x - 但脚本在正文加载之前运行(源位于 head 标签的末尾),并且我无法创建与正文内容相关的元素,因为它们尚未加载:

var x = 5;
window.onload = function() {
    var y = 10;
}

无法访问变量 y,大概是因为它是一个私有变量,在全局范围内不可用(我在这里真的正确吗?使用返回失败。我只是希望能够从正文中创建变量,但我不能,因为脚本没有及时加载。

如何实现这一点?我实际上无法解决这个大概简单的问题。感谢您在这里的任何帮助。

当我在

控制台中需要变量时,我使用的一种简单方法是将它们分配给window,如下所示:

window.y = y;

然后在您的控制台中,ywindow.y将是该变量:)

在全局范围内声明y并在 onload 函数中初始化它。

var x = 5;
var y;
window.onload = function() {
    y = 10;
}

你显然不能像这样在 window.onload 函数之外访问 y,因为当你检查 y 是什么时,窗口还没有加载。

var x = 5;
window.onload = function() {
    var y = 10;
}
console.log(y)

假设你不是这个意思,你只是使用 onload 作为函数的示例,你可以使用 window.y 作为var y的替代品,它将在窗口中是全局的,所以你可以在函数之外使用它。

var x = 5;
function define_y() {
  window.y = 10;
}
window.onload = function() {
  define_y();
  console.log(y);
}

您可以创建一个全局命名空间,并在以后向其添加属性。

var namespace = Object.create(null); // empty object without prototypes
window.onload = function() {
    namespace.y = 10;
}

最新更新