你能在Curried箭头函数表达式中实现while循环吗?

时间:2017-05-24 17:25:00

标签: javascript while-loop ecmascript-6

你能在curried的箭头函数表达式中实现while循环吗? 我希望能够将while循环表达为表达式。

var arr = [1,2,3,4,5,6];

var len = arr.length;

const iter = i => while(() => (console.log(i), ()=>i--);

 iter(len);

3 个答案:

答案 0 :(得分:4)

不。没有块的箭头函数必须是表达式,而循环不是(它们是语句)。你可能会喜欢

function whileExp(check,callback){
 while(typeof check=="function"?check():check){
   if(callback) callback();
 }
}

(counter=>whileExp(()=>--counter,()=>alert(counter)))(10);

但是我不知道为什么这应该有用

答案 1 :(得分:2)

您缺少数组声明的名称,我不知道while循环的这种语法,但下面的语法工作正常



var arr = [1,2,3,4,5,6];

var len = arr.length;

const iter = i => {while(i > 0){console.log(i); i--;}};

 iter(len);




答案 2 :(得分:1)

您可以使用Array.prototype.reduceRight(),逗号运算符

const arr = [1,2,3,4,5,6];

const iter = (a, b) => (console.log(a), b);

arr.reduceRight(iter);