猿问

关于js闭包问题

下面这段代码是js高级程序设计第三版书上的一个例子,请问这个是否使用了闭包,书上说返回结果会全是10,但我测试发现返回结果是0~9

function createFunctions(){
		var result = new Array();

		for(var i=0;i<10;i++){
			result[i] = function(){
				return i;
			}
		}
		return result;
	}
	console.log(createFunctions());


慕娘5227020
浏览 1570回答 1
1回答

qq_青枣工作室_0

是用了闭包,而且结果全是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]()); }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答