access variable from outside loop
Solution 1
If you want to access every element of randAd
outside the for
loop try like this var randAd = [];
to initialize it as an array. You can easily access it after your for loop but If you use it as a simple variable var randAd;
then you'll get the last variable always (it overwrites). So initialize it as an array and push every element inside loop before outputting it.
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);
Solution 2
You are overthinking. You have done the hard bit in getting a random number between 0 and array's length. So, just get the ad
at that index:
var randAd = mobileAds[randNum];
No need to use for
loop at all.
Solution 3
If you would like to use randAd it should be initialised as an empty array []
and then push in that array from inside your loop randAd.push()
. Like this:
var randAd=[];
var i;
for (i = 0; i < mobileAds.length; ++i) {
randAd.push(mobileAds[randNum]);
}
Scott Brown
Updated on June 16, 2022Comments
-
Scott Brown almost 2 years
I know that this is fundamental JS, but I'd like a simple explanation. From what I've read, If i declare an empty variable outside of my loop, the variable inside the loop should be accessible globally? Or am I totally wrong?
I would like to access
randAd
from outside myfor
loop.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]); }