26 02 月 2020 功能 - 防止抖动 2020-02-26 描述创建一个防止抖动的函数,使其延迟调用提供的函数,直到上次调用该函数至少经过了 ms 毫秒提示防止抖动函数每一次被调用前,都需要使用 clearTimeout()清空上一次将要运行的 timeout 使用 setTimeout()创建一个新的 timeout,将调用的函数延迟至少 ms 后在执行使用 Function.prototype.apply()设置函数的上下文为 this,并提供必要的参数第
26 02 月 2020 功能 - 异常捕获 2020-02-25 描述尝试从提供的参数中调用其方法,返回运行的结果或者捕获的异常对象。提示使用 try...catch 块来返回函数运行的结果或者是适当的异常代码 constattempt=(fn,...args)=>{try{returnfn(...args);}catch(e){returneinstanceofError?e:newError(e);}};示例根据选择器获取元素,并对选择器错误的情
23 01 月 2020 功能 - 柯里化函数 2020-01-23 描述将一个函数实现柯里化传参。提示使用递归如果提供的参数(args)个数充足,则调用传递的函数 fn 否则的话,返回一个包含剩余参数的柯里化函数 fn 如果你想要柯里化一个可以接受任意参数的函数(一个可变参函数,如 Math.min()),你可以将参数的数量传递给第二个可选参数 arity 代码 constcurry=(fn,arity=fn.length,...args)=>arity<=ar
22 01 月 2020 功能 - 调用栈清空后再执行 2020-01-22 描述延迟一个函数的调用,直到调用栈被清空后才执行。提示使用一个 1ms 延迟的 setTimeout()将一个新的事件添加到浏览器事件队列中,并允许渲染引擎完成他的任务使用扩展运算符...将 fn 之后剩余的参数提供给延迟执行的函数作为参数代码 constdefer=(fn,...args)=>setTimeout(fn,1,...args);示例先打印 b 再打印 a:defer(console
15 01 月 2020 功能 - 重复调用函数 2020-01-14 描述使用迭代函数和初始值构建一个数组。提示使用 while 循环和 Array.prototype.push()重复的调用函数,直到返回 false 迭代函数只接受一个参数 seed,他每次运行后要么返回包含两个元素的数组[value,nextSeed],要么返回终止标志 false 代码 constunfold=(fn,seed)=>{letresult=[],val=[null,seed];w
15 01 月 2020 功能 - 函数聚合 2020-01-13 描述接受一个聚合函数和一个使用列表保存的分支函数作为参数,每一个分支函数都使用相同的参数进行运行,并将运行结果展开作为聚合函数的参数,最终返回该聚合函数运行的结果。提示使用 Array.prototype.map()和 Function.prototype.apply()让每一个函数都使用传入的参数进行运行使用扩展运算符(...)将所有其他的函数结果做为参数传递给 coverger 代码
10 01 月 2020 功能 - 属性方法绑定 2020-01-10 描述创建一个函数,使其可以调用指定对象中的属性方法,并且还可以支持将后续提供的任意参数作为柯里化函数中的单一参数。提示返回一个使用 Function.prototype.apply()绑定 context[fn]为 context 的 function 使用扩展运算符...展开后续提供的任意参数和单一参数作为 function 中的参数代码 constbindKey=(context,fn,...
09 01 月 2020 功能 - 属性检测 2019-12-18 描述传入一个 predicate 函数和一个 prop 字符串,然后使用柯里化函数将通过属性调用检查的 object 传递给 predicate。提示获取 obj 对象中的 prop 值将获取的值传递给已提供好的 predicate 函数最终返回该函数的真假值代码 constcheckProp=(predicate,prop)=>obj=>!!predicate(obj[prop]);示例检测对象的长度是否
03 01 月 2020 日期 - 一个日期是否在另一个日期后面 2020-01-03 描述检查一个日期是否在另外一个日期的后面。提示传入两个参数,检测第一个日期是否在第二个日期之后使用大于运算符(>)来进行检查代码 constisAfterDate=(dateA,dateB)=>dateA>dateB;示例输入两个日期,第一个日期是否在第二个日期之后:isAfterDate(newDate(2020,01,02),newDate(2020,01,03));//fal
02 01 月 2020 日期 - 计算两个日期之间相差的天数 2020-01-02 描述放回两个日期中相差的天数。提示两个 Date 对象相减获取相差的毫秒把相差的毫秒兑换为天数代码 constgetDaysDiffBetweenDates=(dateInitial,dateFinal)=>(dateFinal-dateInitial)/(1000*3600*24);示例 B3log 想法距今有多少天了:getDaysDiffBetweenDates(newDate('2