一道ES6的面试题

下面是一道ES6的面试题。
想要实现0-9的输出。

var funcs = [];
for(var i=0;i<10;i++){
	funcs.push(function(){
		console.log(i);
	});
}
funcs.forEach(function(aa){
	aa();
})

以上输出的结果为10个10
在这里插入图片描述
没有实现0-9的输出,要想输出需要用js的立即执行函数(IIFE)
代码如下:

 var funcs = [];
 for(var i=0;i<10;i++){
    	funcs.push(
    		(function(value){
    			return function(){
    				console.log(value);
    			}
    			
    		})(i)
    	);
    }
  funcs.forEach(function(aa){
   	aa();
 })

如果换成ES6的方法就会相对简单很多

var funcs = [];
for(let i=0;i<10;i++){
		funcs.push(function(){
			console.log(i);
		})
}
funcs.forEach(function(aa){
		aa();
})

当然还可以进行优化

const funcs=[];
 for(let i=0;i<10;i++){
   		funcs.push(function(){
   			console.log(i);
   		})
   }
funcs.forEach(func => func())

这些都可以输出0-9的结果。

猜你喜欢

转载自blog.csdn.net/weixin_43742121/article/details/84548243