函数柯里化

柯里化的作用:缓存部分性能。

  1. 柯里化: 一个函数原本有多个参数, 之传入一个参数, 生成一个新函数, 由新函数接收剩下的参数来运行得到结构.
  2. 偏函数: 一个函数原本有多个参数, 之传入一部分参数, 生成一个新函数, 由新函数接收剩下的参数来运行得到结构.
  3. 高阶函数: 一个函数参数是一个函数, 该函数对参数这个函数进行加工, 得到一个函数, 这个加工用的函数就是高阶函数.

问题:已知一组标签名 tags=[‘div’,‘p’,‘a’,‘img’,‘ul’,‘li’],判断后续标签名是否属于该组标签。

常规方法(循环):

const tags=['div','p','a','img','ul','li']
function isHTMLTag( tags, tagName ) {
  tagName = tagName.toLowerCase();
  // indexOf 内部本质还是遍历
  if ( tags.indexOf( tagName ) > -1 ) return true;
  return false;
}
isHTMLTag( tags, 'div' )

柯里化:

const tags=['div','p','a','img','ul','li']
// 函数柯里化
function makeMap( tags ) {
      let mapset= {}; 
      tags.forEach( key => mapset[ key ] = true );

      return function ( tagName ) {
        return !!mapset[ tagName.toLowerCase() ]
      }
    }

let isHTMLTag = makeMap( tags ); // 返回的函数
// 此时使用 isHTMLTag 函数内部已经没有循环
isHTMLTag( 'div' )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值