码迷,mamicode.com
首页 > Web开发 > 详细

几个例子弄懂JS 的setTimeout的运行方式

时间:2014-08-24 20:56:53      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:js   javascript   setimeout   全局变量   局部变量   

<span style="font-size:18px;">例子:1</span>
function test() {
	  var a = 1;
	  setTimeout(function() {
	    alert(a);
	    a = 5;
	  }, 1000);
	}
	test();
	alert(0);//前面的两个setTimeout延迟了 所以先执行这个
结果:先弹出0,然后弹出1.

例子2

function test() {
	  var a = 1;
	  setTimeout(function() {
	    alert(a);
	    a = 5;
	  }, 1000);
	  alert(a);

	}
	test();
	alert(0);

结果:先弹出1,然后弹出0,最后弹出1 。

先执行test()里的alert(),因为function此时还未执行,因此,a任然为1.因为function还在被延迟着,因此,执行了alert(0),最后到时间了,执行了alert(a),因为前面a已经变为1了,所以,最后弹出的是1.

例子:3:

function test() {
	  var a = 1;
	  setTimeout(function() {
	    alert(a);
	    a = 5;
	  }, 1000);
	  a = 19;
	}
	test();
	alert(0);//前面的alert因为setTimeout延迟了 所以先执行这个。
结果:会先弹出0,然后弹出19. 

延迟了function() {
    alert(a);
    a = 5;
  }

但是a=19还是会照常执行,不是等到延迟结束。所以,执行这个被延迟函数的时候,a=19了!

例子4

function test() {
	  var a = 1;
	  setTimeout(function() {
	    alert(a);
	    a = 5;
	  }, 1000);
	  a = 19;
	setTimeout(function() {
	   alert(a);
	    a = 4;
	  }, 3000);
	}
	test();
	alert(0);//前面的两个setTimeout延迟了 所以先执行这个

结果:会先弹出0,然后弹出19,最后弹出5.

附加解释下全局变量和局部变量!

全局变量:在函数之外定义,或在函数内赋值但前面没加 var 关键字的,都是全局变量

局部变量:定义在函数之内,且前面有 var 关键字的变量

几个例子弄懂JS 的setTimeout的运行方式

标签:js   javascript   setimeout   全局变量   局部变量   

原文地址:http://blog.csdn.net/yuxuan89814/article/details/38796727

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!