我想要這樣的效果,即:點擊btn按鈕,想要總是實時的獲取a的值,結果只能獲取窗口縮放前a變化的值。其中代碼中的unLoad是為了縮放窗口后,防止btn多次綁定匿名函數。源代碼如下:varbtn=document.querySelector(".btn");varunLoad=true;vartimer=null;functionadd(){vara=1;if(unLoad){btn.addEventListener("click",function(){document.title=a;},false);}clearInterval(timer);timer=setInterval(function(){a++;console.log(a);},1000);unLoad=false;}add();window.addEventListener("resize",function(){add();console.log("resize");},false);后來,我改動了下代碼,把a放到add外面,作為全局變量。varbtn=document.querySelector(".btn");varunLoad=true;vartimer=null;vara=1;functionadd(){if(unLoad){btn.addEventListener("click",function(){document.title=a;},false);}clearInterval(timer);timer=setInterval(function(){a++;console.log(a);},1000);unLoad=false;}add();window.addEventListener("resize",function(){add();console.log("resize");},false);然后縮放窗口前后測試發現,又可以實時獲取a的變化值。另外,如果不把a移出add外面,就像第一段代碼一樣把a作為add的局部函數,但是不對btn做綁定判斷(即去掉外面的if判斷),那么也可以實時獲取a的變化值。我現在的問題是,不能理解,為啥第一段代碼不能實時獲取a的值呢?這種情況下,點擊btn按鈕,不是要去add函數中尋找a的值嗎?而定時器又不斷在改變a的值,a作為add函數的局部變量,應該可以在點擊btn時,反應出來???請各位賜教下,謝謝~
一個作用域的問題,求解答?
MMTTMM
2019-04-16 16:58:27