Page 1 of 1

Javascript setTimout Question

PostPosted: 16 Nov 2020, 13:18
by TheCrock
I am following the excellent book Foundation Game Design with HTML5 and Javascript.

I have a piece of code, which works but i'm not sure why.



function destroyAlien(alien)
{
//Change the alien's state and update the object
alien.state = alien.EXPLODED;

alien.update();

//Remove the alien after 1 second
setTimeout(removeAlien, 1000);

function removeAlien()
{
removeObject(alien, aliens);
removeObject(alien, sprites);
}


As you can see it is a function which uses setTimout to call another function. It only calls removeAlien function when it is inside the main function. If I move callAlien function out of the main function it does not work. I am puzzled as to why this is.

Can any sage member here tell me why this is?
Thanks in advance
Crock

Re: Javascript setTimout Question

PostPosted: 23 Nov 2020, 00:05
by mdtrooper
Did you fixed the code? Because your post is from some days ago.

Well, do you have this code in any code repository? Because I don't know what it is the reason to fail when the function is out.

Re: Javascript setTimout Question

PostPosted: 30 Nov 2020, 00:28
by TheCrock
Hi midtroop. Because i created the variable alien inside the function it is a temporary variable. It could not access the alien variable in the main program. Making a variable within the function ties the variable's scope to within the function. If i understand it correctly.

thanks for your reply and interest.