【问题标题】:access variable from outside loop从外部循环访问变量
【发布时间】:2017-11-18 14:38:00
【问题描述】:

我知道这是基本的 JS,但我想要一个简单的解释。根据我的阅读,如果我在循环之外声明一个空变量,那么循环内的变量应该可以全局访问吗?还是我完全错了?

我想从我的for 循环之外访问randAd

var mobileAds = [
    "mobile/bb.jpg",
    "mobile/eyeko.jpg",
    "mobile/farfetch.jpg",
    "mobile/fsb.jpg"
];

var randNum = (Math.floor(Math.random() * mobileAds.length));
var randAd;

var i;
for (i = 0; i < mobileAds.length; ++i) {
    randAd = (mobileAds[randNum]);
}

【问题讨论】:

  • 呃。谢谢@adiga
  • 您标记为已接受的答案会创建一个数组,其中包含相同的 ad 重复 4 次。您打算在randAd 中创建一个数组还是单个字符串变量?

标签: javascript jquery loops variables


【解决方案1】:

如果您想在for 循环之外访问randAd 的每个元素,请尝试像这样var randAd = []; 将其初始化为数组。您可以在 for 循环之后轻松访问它,但如果您将其用作简单变量 var randAd;,那么您将始终获得最后一个变量(它会覆盖)。所以将它初始化为一个数组,并在输出之前将每个元素推入循环中。

var mobileAds = [
        "mobile/bb.jpg",
        "mobile/eyeko.jpg",
        "mobile/farfetch.jpg",
        "mobile/fsb.jpg"
    ];
    
var randNum = (Math.floor(Math.random() * mobileAds.length));
var randAd = []; // see the change here
    
var i;
for (i = 0; i < mobileAds.length; ++i) {
    randAd.push(mobileAds[randNum]); // push every element here
}
console.log(randAd);

【讨论】:

  • 谢谢! push 在存储 array 时有意义。但最初我只是想从function 外部访问一个简单的变量。在那种情况下我的代码是否正确?
  • 是的,看起来还可以。
【解决方案2】:

你想多了。您已经完成了获取 0 和数组长度之间的随机数的难点。因此,只需在该索引处获取 ad

var randAd = mobileAds[randNum];

根本不需要使用for循环。

【讨论】:

    【解决方案3】:

    如果你想使用 randAd,它应该被初始化为一个空数组[],然后从你的循环randAd.push() 中推入该数组。像这样:

    var randAd=[];
    
    var i;
    for (i = 0; i < mobileAds.length; ++i) {
        randAd.push(mobileAds[randNum]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-13
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多