[英]Javascript reusable functions
I have 2 functions with the same logic (eg: printing in console multiple concatenated elements) but with one specificity. 我有2个功能具有相同的逻辑(例如:在控制台中打印多个串联的元素),但具有一种特殊性。 The easy way is to specify the specificity in parameter, like this : 简单的方法是指定参数的特异性,如下所示:
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")
However, i would like to handle this specificity with a function, not as a parameter, like this : 但是,我想用函数而不是像这样处理这种特殊性:
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")
Problem is, when i want to add/remove a parameter, for example, i need to add/remove it everywhere 问题是,例如,当我想添加/删除参数时,我需要在任何地方添加/删除参数
Is there any way to do it better ? 有什么办法可以做得更好?
Something like this : 像这样的东西:
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")
Thanks in advance ! 提前致谢 !
Maybe what you are looking for are curry functions : 也许您正在寻找的是咖喱函数 :
// 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);
Ref: https://medium.com/front-end-weekly/javascript-es6-curry-functions-with-practical-examples-6ba2ced003b1 参考: https : //medium.com/front-end-weekly/javascript-es6-curry-functions-with-practical-examples-6ba2ced003b1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.