gpt4 book ai didi

JavaScript 可重用函数

转载 作者:行者123 更新时间:2023-12-03 00:04:02 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com