【问题标题】:converting recursive function to arrow function in javascript在javascript中将递归函数转换为箭头函数
【发布时间】:2018-06-17 08:12:48
【问题描述】:

如何将以下函数转换为箭头函数?我在这里使用柯里化

function mergeString(str){
   return function(str1){
     if(str1){
        return mergeString(str + ' ' + str1); 
     }
     else
     {
       return str;
     }
   }
}

【问题讨论】:

  • 你为什么想要在这里使用箭头函数?没有充分的理由使用一个。
  • 请注意,术语“currying”仅适用于固定数量的函数。对于可变参数函数,这真的很难

标签: javascript ecmascript-6 arrow-functions


【解决方案1】:

您可以链接函数头,然后链接所有函数体。

const mergeString = str => str1 => str1 ? mergeString(str + ' ' + str1) : str;

console.log(mergeString('a')());
console.log(mergeString('a')('b')('c')());
console.log(mergeString('this')('should')('work')('as')('well')());

【讨论】:

  • 非常好,但是mergeString() // => "" 呢?
  • 需要不同的函数签名。
【解决方案2】:

其实这是一个很好的休息参数用例:

 const mergeStrings = (...strings) => strings.join(" ");

可用作:

mergeString(
  "one",
  "two",
  "three"
)

【讨论】:

  • @nishant 只是想展示一些替代方法来写这个:)
猜你喜欢
  • 2017-12-06
  • 2018-07-13
  • 2019-04-12
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
相关资源
最近更新 更多