亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于局部變量的問題

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 回答

window.onload 中定義的是?window.onload 函數的 局部變量 其他的函數無法使用 ?

所以要重新定義 局部變量

1 回復 有任何疑惑可以回復我~
#1

蒼白的尾巴 提問者

你和上一個人說的相反,哪個對?
2016-06-13 回復 有任何疑惑可以回復我~
#2

D__0 回復 蒼白的尾巴 提問者

運行代碼試試看就知道誰對誰錯了
2016-06-23 回復 有任何疑惑可以回復我~
#3

蒼白的尾巴 提問者

非常感謝!我找了一下,你說得對
2016-06-23 回復 有任何疑惑可以回復我~
#4

香寶的夫差

按理說,在最外圍定義所有變量 其余函數會向上尋找。即在data后邊定義。 嘗試了一下,好像不可以。為何?
2017-07-01 回復 有任何疑惑可以回復我~
#5

香寶的夫差 回復 香寶的夫差

明白了。。。
2017-07-01 回復 有任何疑惑可以回復我~
查看2條回復

你可以這么理解一下吧,首先,把變量定義在函數里,那個是函數里的局部變量,如果你把這個變量提出,在window.onload外聲明,那么這個是全局變量,但是根據代碼由上到下運行,body里的代碼未運行就先執行了全局變量的document.getElementById,這樣應該取不到值吧,個人見解,不正確請告訴我。

0 回復 有任何疑惑可以回復我~

寫在函數里面的變量是局部變量(只在函數中起作用)

window.onload中定義的是全局變量,其它函數可以引用 ?

0 回復 有任何疑惑可以回復我~
#1

蒼白的尾巴 提問者

那老師的代碼為什么要在其他函數里重復的定義play=document.getElementById('play');這句話呢?
2016-05-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于局部變量的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號