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

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

急求?。。?!閉包以及循環中創建函數十分感謝

急求!?。。¢]包以及循環中創建函數十分感謝

慕田峪9158850 2019-08-05 23:03:19
在看JS語言精粹遇到的問題,先上代碼varadd_the_handlers=function(nodes){vari;for(i=0;ialert(0);//第一次循環nodes[1].click=()=>alert(1);//第二次循環...依次類推nodes[n].click=()=>alert(n);//第n+1次循環
查看完整描述

2 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

對于事件處理函數而言,其內部上下文中并不存在變量i,于是就會嘗試沿作用域鏈向父級的作用域中去尋找。而在上一級,也即add_the_handlers這個函數的上下文中,找到了變量i,所以當觸發事件處理函數時,會獲取到add_the_handlers中的i的值。于是乎:for循環時,給若干個元素綁定了onclick處理函數,for循環結束后,此時add_the_handlers上下文中的i變量的值為nodes.length。當觸發某個元素的點擊事件時,獲取到的i都是add_the_handlers上下文中的i,也即都會是nodes.length。
                            
查看完整回答
反對 回復 2019-08-05
?
largeQ

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

但是alert(i)中的i指向函數的局部變量i,是變量,當觸發任何一個node的點擊,alert的是i這個變量的當前值,沒什么問題吧。
                            
查看完整回答
反對 回復 2019-08-05
  • 2 回答
  • 0 關注
  • 282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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