23 03 月 2019 功能 - 限制函数的参数个数 2019-03-23 描述创建一个最多接受 n 个参数的函数,他可以忽略任何多余的参数。提示参数 fn 为提供的函数,n 为函数最多接受的参数的个数,可使用 Array.prototype.slice(0,n)和扩展运算符...。代码 constary=(fn,n)=>(...args)=>fn(...args.slice(0,n));示例依次获取长度不同的数组中的前 2 位中较大的值:constfirstTwoMax
24 03 月 2019 功能 - 调用对象属性的方法 2019-03-24 描述根据输入的关键字和一组参数使返回的函数可以根据传入的参数去执行关键字方法。提示使用闭包调用传入的关键字和一组参数。使用柯里化函数。代码 constcall=(key,...args)=>context=>context[key](...args);示例对数组进行计算并返回其结果:call('map',x=>2*x)([1,2,3])//[2,4,6]Promise.resolv
26 03 月 2019 功能 - 参数位置更改 2019-03-26 描述使用函数作为参数,然后将该函数的第一个参数作为最后一个参数。提示使用扩展运算符接受第二个及以后的参数返回一个接受可变参数的闭包函数,并交换输入参数的位置代码 constflip=fn=>(first,...rest)=>fn(...rest,first);示例对象合并:leta={name:'JohnSmith'};letb={};constmergeFrom=flip(Obj
27 03 月 2019 功能 - 传入的函数都使用同一参数运行 2019-03-27 描述创建一个函数,该函数可以使用传入的每一个方法来接收的给定的可扩展参数作为参数执行后并返回结果。提示使用 Array.prototype.map()和 Function.prototype.apply()将传入的函数进行迭代并应使用给定的参数。代码 constover=(...fns)=>(...args)=>fns.map(fn=>fn.apply(null,args));示例获取
30 03 月 2019 功能 - 函数管道 2019-03-30 描述从左到右依次执行传入的函数组合。提示对接受的函数参数使用扩展运算符后便可用 Array.prototype.reduce()来执行从左到右的函数组合。第一个(最左边)函数可以接受一个或多个参数,剩下的函数只能为一元函数。代码 constpipeFunctions=(...fns)=>fns.reduce((f,g)=>(...args)=>g(f(...args)));示例对参数
01 04 月 2019 功能 - 对异步函数使用 promise 2019-03-31 描述转换异步函数使其返回 promise。提示使用柯里化返回一个函数,该函数返回一个调用原始函数的 Promise。使用扩展运算符传入所有的参数。在 Node8+ 中,你可以使用 util.promisify 代码 constpromisify=func=>(...args)=>newPromise((resolve,reject)=>func(...args,(err,result)=>(e
01 04 月 2019 功能 - 按指定索引进行排序 2019-04-01 描述创建一个函数,调用他提供的函数就可让传入的数组根据提供的索引进行排序。提示使用 Array.prototype.map()基于根据扩展运算符组合的 indexes 对传入的参数进行重新排序,以便将最终结果展开作为参数传到 fn 中。代码 constrearg=(fn,indexes)=>(...args)=>fn(...indexes.map(i=>args[i]));示例对传入的参数按
03 04 月 2019 功能 - 仅接受一个参数 2019-04-03 描述创建一个函数,使其仅接受一个函数,忽略其他额外的参数。提示调用提供的方法:fn,使其只接受一个参数。代码 constunary=fn=>val=>fn(val);示例字符串数组转为整数数组:`['6','8','10'].map(unary(parseInt));//[6,8,10]` 返回总目录每天 30 秒系列之 JavaScript 代码
15 01 月 2020 功能 - 函数聚合 2020-01-13 描述接受一个聚合函数和一个使用列表保存的分支函数作为参数,每一个分支函数都使用相同的参数进行运行,并将运行结果展开作为聚合函数的参数,最终返回该聚合函数运行的结果。提示使用 Array.prototype.map()和 Function.prototype.apply()让每一个函数都使用传入的参数进行运行使用扩展运算符(...)将所有其他的函数结果做为参数传递给 coverger 代码
15 01 月 2020 功能 - 重复调用函数 2020-01-14 描述使用迭代函数和初始值构建一个数组。提示使用 while 循环和 Array.prototype.push()重复的调用函数,直到返回 false 迭代函数只接受一个参数 seed,他每次运行后要么返回包含两个元素的数组[value,nextSeed],要么返回终止标志 false 代码 constunfold=(fn,seed)=>{letresult=[],val=[null,seed];w
22 01 月 2020 功能 - 调用栈清空后再执行 2020-01-22 描述延迟一个函数的调用,直到调用栈被清空后才执行。提示使用一个 1ms 延迟的 setTimeout()将一个新的事件添加到浏览器事件队列中,并允许渲染引擎完成他的任务使用扩展运算符...将 fn 之后剩余的参数提供给延迟执行的函数作为参数代码 constdefer=(fn,...args)=>setTimeout(fn,1,...args);示例先打印 b 再打印 a:defer(console
23 01 月 2020 功能 - 柯里化函数 2020-01-23 描述将一个函数实现柯里化传参。提示使用递归如果提供的参数(args)个数充足,则调用传递的函数 fn 否则的话,返回一个包含剩余参数的柯里化函数 fn 如果你想要柯里化一个可以接受任意参数的函数(一个可变参函数,如 Math.min()),你可以将参数的数量传递给第二个可选参数 arity 代码 constcurry=(fn,arity=fn.length,...args)=>arity<=ar
25 02 月 2020 大前端 - Web Components 2020-02-24 简介 WebComponents 是 W3C 正在向 HTML 和 DOM 规范添加的一套功能,他允许在 Web 应用程序中创建可重用的组件。他由以下三部分组成,可单独或组合使用:Customelements(自定义元素):编写自定义组件的 JavaScriptAPIShadowDOM(影子 DOM)HTMLtemplates(HTML 模板):包含 <template> 和 <slot>Customeleme
26 02 月 2020 功能 - 异常捕获 2020-02-25 描述尝试从提供的参数中调用其方法,返回运行的结果或者捕获的异常对象。提示使用 try...catch 块来返回函数运行的结果或者是适当的异常代码 constattempt=(fn,...args)=>{try{returnfn(...args);}catch(e){returneinstanceofError?e:newError(e);}};示例根据选择器获取元素,并对选择器错误的情