Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript可重用函数_Javascript_Function - Fatal编程技术网

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”参数的地方在哪里?这不是传递给原来的功能(信息,警告),谢谢你的回答,但它不是我要找的。我已经更新了描述,使之更准确。