JavaScript 可重用函数

标签 javascript function

我有两个具有相同逻辑的函数(例如:在控制台中打印多个串联元素),但有一个特殊性。最简单的方法是指定参数的特殊性,如下所示:

function baseLogic (specific, general) {
  // ... many processes before here
  if(specific == "info") console.info(general)
  if(specific == "warn") console.warn(general)
}

// Calls
baseLogic("info", "foo")
baseLogic("warn", "bar")

但是,我想用函数来处理这种特殊性,而不是作为参数,如下所示:

function baseLogic (specific, general) {
  // ... many processes before here
  if(specific == "info") console.info(general)
  if(specific == "warn") console.warn(general)
}

function info(general) {
  baseLogic("info", general)
}

function warn(general) {
  baseLogic("warn", general)
}

// Calls
info("foo")
warn("foo")

问题是,例如,当我想添加/删除参数时,我需要在各处添加/删除它

有什么办法可以做得更好吗?

类似这样的事情:

function baseLogic (specific, general) {
  // ... many processes before here
  if(specific == "info") console.info(general)
  if(specific == "warn") console.warn(general)
}
info = baseLogic("info")
warn = baseLogic("warn")

// Calls
info("foo")
warn("bar")

提前致谢!

最佳答案

也许您正在寻找的是 curry 函数:

// no curry
const sum = (a, b) => a + b

// no curry usage
sum(3, 4)

// curry
const sum = a => b => a + b

// curry usage
sum (2)(1);

引用号:https://medium.com/front-end-weekly/javascript-es6-curry-functions-with-practical-examples-6ba2ced003b1

关于JavaScript 可重用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55044576/

相关文章:

javascript - Ionic 和 Angular 指令的基本问题

javascript - 如何在 Chart.js 中使用图标作为图例?

javascript - 移相器 : Set object variable

javascript - Javascript 游戏 - 添加更多问题

甲骨文函数 : Replicate wm_concat

javascript - 在 javascript 中获得映射和过滤器的好处的最优雅的方法是减少数组并更改其中的变量

c - 在 Linux 上以编程方式获取函数的总时间和忙碌时间

python - 如何在其他函数可以在 python 中访问的函数中创建变量?

C程序查找一个c文件的函数名

function - LISP 函数返回更大的数