千家信息网

ES6高阶函数的应用示例

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这篇文章主要介绍ES6高阶函数的应用示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!tab 函数// 此处tap函数接受一个 vaule 并返回一个包含value 闭包函数,
千家信息网最后更新 2025年02月08日ES6高阶函数的应用示例

这篇文章主要介绍ES6高阶函数的应用示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

tab 函数

// 此处tap函数接受一个 vaule 并返回一个包含value 闭包函数,该函数被执行const tap = (value) => (fn) => ( typeof(fn) === 'function' && fn(value), console.log(value))

tab函数用处:假设你在遍历一个来自服务器的数组,并发现数据错了,因此你想调试一下,看看数组包含了什么,就可以用 tab函数

[1, 2 ,3, 4].forEach((a) => { tap(a)((a)=> {  console.log(a) })});#### 2) once 函数

在很多情况下,我们只需要运行一次给定的函数,发起一次银行支付请求等,这时就可以用到 once 函数。

const once = (fn) => {  let done = false;  return function () {    return done?undefined:((done=true),fn.apply(this,arguments))  }}const doPayment = once(()=>{ console.log('payment is done')})doPayment(); // payment is doneconsole.log(doPayment()); //undefined#### 3) 函数柯里化的应用

开发者编写代码的时候应用的不同阶级编写很多日志,我们可以编写一个如下的日志函数:

const loggerHelper = (mode, initialMessage, errorMessage, lineNo) => { if (mode === 'DEBUG') {  console.debug(initialMessage,errorMessage + 'at line:' + lineNo) } else if (mode === 'ERROR') {  console.error(initialMessage,errorMessage + 'at line:' + lineNo) } else if (mode === 'WARN') {  console.warn(initialMessage,errorMessage + 'at line:' + lineNo) } else  throw "Wrong mode"}

当开发者需要向控制台打印Stats.js文件中的错误时,可以用如下方式:

loggerHelper("ERROR", "ERROR At Stats.js", "Invalid argument passed", 23);

这样对于 我们追求完美可读的程序员来说,可能是不太能接受的,现在用柯里来优化以上代码,
先简要说明什么是函数柯里化:

柯里化是把一个多参数函数转换成一个嵌套的一元函数过程。

封装一个把把多参数函数转制为一元函数的curry函数

let curry = (fn) => { if (typeof fn !== 'function') {  throw Error('No function provided'); } return function curriedFn(...args) {  // 传入参数是否小于函数参数列表长度,  if (args.length < fn.length) {   return function() {    return curriedFn.apply(null, args.concat([].slice.call(arguments)));   }  }  return fn.apply(null, args) }} let errorLogger = curry(loggerHelper)("ERROR")("ERROR At Stats.js");let debugLogger = curry(loggerHelper)("DEBUG")("ERROR")("Debug At Stats.js");let warnLogger = curry(loggerHelper)("WARN")("Warn")("At Stats.js");// 用于错误errorLogger("Error message", 21)// 用于调试debugLogger('Debug message', 233)// 用于警告warnLogger("Warn message", 34);

以上是"ES6高阶函数的应用示例"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0