范围是在这里更改还是其他?

Is the scope being changed here or is it something else?

我对 JavaScript 非常缺乏经验,所以我真的不知道我做错了什么。

这非常有效:

myarray = [];

myarray.push(1);

这也非常有效:

myarray = [];

function example(){
  myarray.push(1);
}

example();

这根本行不通:

myarray = [];

function example(){
  myarray.push(1);
}

$(window).load(function(){
  example();
});

我是在用 $(window).load(function(){... 改变范围还是什么?

如何让 example() 像第三个片段中的第二个片段那样执行?

window.onload 事件在加载完整 DOM 时触发,因此在第三种情况下 example() 将 运行 稍后,而其他代码将 运行 更早。

我重现了您的问题,可能我不正确,但下面是 运行ning 代码,无论我观察到什么

myarray = [];

function example(){
  myarray.push(1);
}

$(window).load(function(){

  example();
});

setTimeout(function() {
    console.log(myarray);
},100);

如果您有其他问题,请回答您自己的问题...我有兴趣深入了解