Javascript可重用函数
我有两个具有相同逻辑的函数(例如:在控制台中打印多个串联元素),但有一个特殊性。简单的方法是在参数中指定特异性,如下所示:Javascript可重用函数,javascript,function,Javascript,Function,我有两个具有相同逻辑的函数(例如:在控制台中打印多个串联元素),但有一个特殊性。简单的方法是在参数中指定特异性,如下所示: function baseLogic (specific, general) { // ... many processes before here if(specific == "info") console.info(general) if(specific == "warn") console.warn(general) } // Calls baseL
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")
但是,我想用一个函数来处理这个特殊性,而不是作为一个参数,如下所示:
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")
问题是,例如,当我想添加/删除一个参数时,我需要在任何地方添加/删除它
有没有办法做得更好
大概是这样的:
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")
提前谢谢 也许您正在寻找的是咖喱功能:
参考:您的问题不清楚。但是你似乎想动态地创建
a
和b
函数?我已经更新了描述,事实上有点模糊……传递“general”参数的地方在哪里?这不是传递给原来的功能(信息,警告),谢谢你的回答,但它不是我要找的。我已经更新了描述,使之更准确。