麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開(kāi)發(fā) > JS > 正文

js for循環(huán),為什么一定要加var定義i變量

2024-09-06 12:45:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
譬如下面。
代碼如下:
for(i=0;i<10;i++){//就不寫(xiě)成: var i=0
   alert(i);
}

  但是,這真的不是個(gè)好習(xí)慣,下面我就說(shuō)說(shuō)為什么寫(xiě)Js的for循環(huán)一定要加var,否則會(huì)時(shí)不時(shí)給你帶來(lái)煩人難查的bug。
  譬如現(xiàn)在我們要實(shí)現(xiàn)這樣的功能:輸出  
  10
  20
  30
  40
  50
  60
  70
  80
  90
  100
  通過(guò)下面code實(shí)現(xiàn),WriteNumber從1到10循環(huán),每次循環(huán)調(diào)用TenTimes方法返回10倍的索引值。 
代碼如下:
<script type="text/javascript">
function WriteNumber() {
for (i = 1; i <= 10; i++) {
document.write(TenTimes(i) + "<br/>")
}
}
function TenTimes(v) {
var result = 0;
alert(i);
for (i = 1; i <= 10; i++) {
result += v;
}
return result;
}
WriteNumber();
//alert(i)
</script>

  你會(huì)發(fā)現(xiàn)最終只輸出了10。大家可以用下面的代碼框運(yùn)行測(cè)試。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
關(guān)于在WriteNumber和TenTimes方法里加不加var,就是說(shuō)是否聲明索引變量i有4種情況:
  第一種情況,WriteNumber和TenTimes各有1個(gè)for循環(huán),2個(gè)循環(huán)里均沒(méi)有用var聲明i索引變量。
  運(yùn)行結(jié)果:會(huì)alert出1。結(jié)果只輸出了10,不是我們所想要的。
  分析:執(zhí)行WriteNumber時(shí),其作用域內(nèi)并沒(méi)有找到聲明過(guò)的變量i,直接對(duì)i進(jìn)行賦值,則隱式的將i聲明為全局變量,(對(duì)于函數(shù)內(nèi)部未聲明過(guò)的變量,如果給它賦值,會(huì)隱式的將它聲明為全局變量。) 循環(huán)開(kāi)始,i=1,調(diào)TenTimes方法,發(fā)現(xiàn)TenTimes方法也沒(méi)有聲明過(guò)變量i ,所以TenTimes里的i就是全局變量i,就和WriteNumber的i成了同一個(gè)。 這時(shí)line9 alert出來(lái)的自然是1了。TenTimes循環(huán)了10次,使得全局的i變成了11,自然WriteNumber就不會(huì)執(zhí)行第2次循環(huán)操作了。
  驗(yàn)證:如果在WriteNumber();語(yǔ)句后加alert(i),即取消line16的注釋?zhuān)瑫?huì)發(fā)現(xiàn)alert出12(12=10+2個(gè)i++),證明了i此時(shí)為windows對(duì)象。
  第二種情況,WriteNumber聲明了i變量,即line3: var i=1,TenTimes未聲明i變量,即line10: i=1。
  運(yùn)行結(jié)果:line9 alert(i)處報(bào)i未定義錯(cuò)誤 ,因?yàn)閃riteNumber有聲明過(guò)變量i,所以沒(méi)有成為全局的i,TenTimes執(zhí)行時(shí)又沒(méi)有聲明過(guò)i,所以報(bào)未定義。若注釋掉line9,輸出結(jié)果正確。因?yàn)楫?dāng)TenTimes里運(yùn)行到i=1時(shí),隱式將i聲明是全局變量,不影響WriteNumber里的i。WriteNumber仍然會(huì)執(zhí)行10次循環(huán)。
  驗(yàn)證:如果在WriteNumber();語(yǔ)句后加alert(i),即取消line16的注釋?zhuān)瑫?huì)發(fā)現(xiàn)alert出11(11=10+TenTimes里的i++),證明了此時(shí)有windows.i。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲精品免费播放 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 久久青草影院 | 成人男女免费视频 | 九九视频精品在线 | 羞羞答答tv | 日韩av官网| 97超碰资源站 | 国产一级淫| 国产一级免费不卡 | 国产精品久久久久久影院8一贰佰 | 久久精品视频12 | 狠狠干夜夜草 | 欧美日韩高清一区二区三区 | 特级西西444www大精品视频免费看 | 一区二区久久久久草草 | 91精品国产综合久久青草 | 99riav国产在线观看 | 日韩欧美中文字幕视频 | 天天黄色片 | 亚州欧美视频 | 中文字幕在线成人 | 免费观看一级黄色片 | 毛片免费观看完整版 | 一级黄色毛片免费 | 国产精品久久久久久久久久久久久久久久 | 精品国产一区二区三区四区阿崩 | 欧美重口另类videos人妖 | 亚洲99 | 黄网站色成年大片免费高 | 成人三级视频在线观看 | 久久久一区二区 | av成人免费 | 九色一区二区 | 日韩av电影在线观看 | 国产一级淫片a级aaa | 国产精品久久久久久久娇妻 | 亚洲一区二区三区日本久久九 | 草草在线观看 | 操操操日日日干干干 | 毛片在线免费视频 |