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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于塊級作用域的問題

關于塊級作用域的問題

縹緲止盈 2018-08-02 18:54:53
var box = document.querySelector('.box');    for (var i = 0; i < 10; i++) {        var li = document.createElement('li');         li.innerHTML = i;         box.appendChild(li);         li.addEventListener('click',function(){            console.log(i);         })     }這段代碼點擊新生產的li標簽全是10,高程書中說,閉包只能取得包含函數中任何變量的最后一個值,我理解了很長時間,不明白原委。第二個問題是,為什么將i的類型設置為let就是點擊顯示正常,我知道let是塊級作用域的概念,那為何塊級作用域就能顯示正常呢?有些被繞里了,請大神解釋一下,感激不盡了。
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

1,這其實是塊級作用域的問題,并沒有涉及到閉包。
2,產生原因在于var與let使用的作用域不同。
var 變量的作用域是全局,而let 是局部的塊作用域即for循環內,
全局變量唯一性,var 聲明的變量i在循環中被不斷覆蓋最終只是唯一的10,因此在外部調用中無論li的哪一個,最終都是10。
而let是局部的作用域,并不會被覆蓋。

查看完整回答
反對 回復 2018-08-04
  • 1 回答
  • 0 關注
  • 701 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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