javascript - 请教各位大神一个简单的js问题
本文介绍了javascript - 请教各位大神一个简单的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?
解决方案
这道题靠闭包原理,利用闭包原理可以做到.面试新人经常会考到的题
在<<高级程序设计>>中讲闭包章节时,有提到,楼主可以去翻翻书,这样印象会深刻一些
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = (function(index){
return function(){console.log(index)}
})(i)
}
a[6](); // 6
另外2楼,使用let的方法也是ok的,不过那就涉及到了ES6的相关知识储备了,如果楼主基础不好的话,建议一步一步慢慢来
这篇关于javascript - 请教各位大神一个简单的js问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文