猿问

面试时问到的问题

这个程序怎么改 让handle[1]弹1,handle[2]弹2;

var handle=[];
function bindEvent() {    
    for(var i=0;i<=2;i++){        
        handle[i]=function () {            alert(i);        }    }}
   bindEvent();
    handle[1]();
    handle[2]();


皈依舞
浏览 965回答 2
2回答

宝慕林4294392

使用闭包:function&nbsp;bindEvent()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;i=0;i<=2;i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(function(x){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle[x]=function&nbsp;()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(x) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})(i) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} }或者 用let代替varfunction&nbsp;bindEvent()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;for(let&nbsp;i=0;i<=2;i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle[i]=function&nbsp;()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} }

慕田峪4524236

闭包。var handle=[];function bindEvent() {&nbsp; &nbsp; for(var i=0;i<=2;i++){&nbsp; &nbsp; &nbsp; &nbsp; handle[i]=(function (i) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(i);&nbsp; &nbsp; &nbsp; &nbsp; }).bind(this, i);&nbsp; &nbsp; }}bindEvent();handle[1]();handle[2]();
随时随地看视频慕课网APP
我要回答