关于局部变量的问题

来源:4-5 [DOM事件] 抽奖系统(下)

苍白的尾巴

2016-05-28 10:29

var data=['Phone5','Ipad','三星笔记本','佳能相机','谢谢参与','200元购物券','50元话费','再来一次'],
	timer=null;

window.onload=function(){
	var play=document.getElementById('play'),
		stop=document.getElementById('stop'),
 title=document.getElementById('title');
	play.onclick=playFun;
}

function playFun(){
	
		//var that=this;/*this指paly这个按钮*/
	clearInterval(timer);/*清除定时器,防止多次启动*/
	timer=setInterval(function(){
		var random=Math.floor(Math.random()*data.length);
		title.innerHTML=data[random];
		//console.log(random);/*用来调试*/
	},75);
	play.style.background="#999";
}

window.onload里定义的变量应该是局部变量,老师在视频前半部分也说过,所以她把变量写在了需要用这个变量的函数里。但是,我刚才尝试把这个局部变量变成全局变量,结果发现这个局部变量可以在其他函数里使用,这是为什么?

写回答 关注

3回答

  • D__0
    2016-06-13 12:19:32
    已采纳

    window.onload 中定义的是 window.onload 函数的 局部变量 其他的函数无法使用  

    所以要重新定义 局部变量

    香宝的夫差 回复香宝的夫差

    明白了。。。

    2017-07-01 10:29:00

    共 5 条回复 >

  • 慕粉3274123
    2016-08-05 15:31:53

    你可以这么理解一下吧,首先,把变量定义在函数里,那个是函数里的局部变量,如果你把这个变量提出,在window.onload外声明,那么这个是全局变量,但是根据代码由上到下运行,body里的代码未运行就先执行了全局变量的document.getElementById,这样应该取不到值吧,个人见解,不正确请告诉我。

  • woshi123w
    2016-05-28 14:00:24

    写在函数里面的变量是局部变量(只在函数中起作用)

    window.onload中定义的是全局变量,其它函数可以引用  

    苍白的尾巴

    那老师的代码为什么要在其他函数里重复的定义play=document.getElementById('play');这句话呢?

    2016-05-29 19:15:15

    共 1 条回复 >

DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99544 学习 · 1197 问题

查看课程

相似问题