【问题标题】:Is the scope being changed here or is it something else?范围是在这里改变还是别的什么?
【发布时间】:2015-03-04 01:22:53
【问题描述】:

我对 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() 像在第三个 sn-p 中的第二个 sn-p 中那样执行?

【问题讨论】:

  • 你真的加载了 jQuery 吗?
  • 它应该可以工作。尝试添加 jquery 文件。如果有任何错误,请在控制台中查看。
  • 我无法重现您的问题:jsbin.com/refegiviho/1(添加警报后显示数组的值)

标签: javascript arrays variables scope


【解决方案1】:

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

我重现了您的问题,可能是我不正确,但以下是我观察到的运行代码

myarray = [];

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

$(window).load(function(){

  example();
});

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

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

【讨论】:

  • 我花了好几个小时试图弄清楚我做错了什么,但一直以来我都忘记了这一点。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2012-11-08
相关资源
最近更新 更多