为了账号安全,请及时绑定邮箱和手机立即绑定

关于js闭包问题

关于js闭包问题

慕娘5227020 2016-04-26 16:46:57
下面这段代码是js高级程序设计第三版书上的一个例子,请问这个是否使用了闭包,书上说返回结果会全是10,但我测试发现返回结果是0~9function createFunctions(){ var result = new Array(); for(var i=0;i<10;i++){ result[i] = function(){ return i; } } return result; } console.log(createFunctions());
查看完整描述

1 回答

已采纳
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

是用了闭包,而且结果全是10。

你看到的0~9,是你自己误会了。因为 console.log(createFunctions()) 这里打印一个数组,你看到的0~9只不过是这个数组的索引。

这样测试:

function createFunctions(){
        var result = new Array();
 
        for(var i=0;i<10;i++){
            result[i] = function(){
                return i;
            }
        }
        return result;
    }
var funcs = createFunctions();  // 是一个数组,里面有10个function
console.log('第0个:' + funcs[0]());    // 测试第0个function
console.log('第1个:' + funcs[1]());   // 测试第1个function
for(var j=2; j<funcs.length; j++) {  // 测试剩余的function
  console.log('第' + j + ':' + funcs[j]());
}


查看完整回答
2 反对 回复 2016-04-26
  • 1 回答
  • 1 关注
  • 1569 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信