请教各位大神一个简单的js问题

小白请教各位大神,下面这段代码:

var a = [];for (var i = 0; i < 10; i++) {
  a[i] = function () {    console.log(i);
  };
}
a[6](); // 10

a[6]()的输出结果为什么不是6?
a[6]不是等于:

a[6] = function () {        console.log(6);
      };

这样的话a[6]()输出应为6?


有只小跳蛙
浏览 428回答 1
1回答

慕丝7291255

这道题靠闭包原理,利用闭包原理可以做到.面试新人经常会考到的题在<<高级程序设计>>中讲闭包章节时,有提到,楼主可以去翻翻书,这样印象会深刻一些var a = [];for (var i = 0; i < 10; i++) {&nbsp; a[i] = (function(index){&nbsp; &nbsp; return function(){console.log(index)}&nbsp; })(i)}a[6](); // 6
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript