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

查看:115
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆