簡體   English   中英

Javascript可重用函數

[英]Javascript reusable functions

我有2個功能具有相同的邏輯(例如:在控制台中打印多個串聯的元素),但具有一種特殊性。 簡單的方法是指定參數的特異性,如下所示:

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")

提前致謝 !

也許您正在尋找的是咖喱函數

// 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM