前端最终规范


1.test

<h2>函数柯里化</h2> <pre><code class="language-markdown"> function curry(fn){ console.log('fn',fn) console.log('arguments',arguments.length) console.log('fn.length',fn.length) if(fn.length&lt;=1) return fn const generator=(...args)=&gt;{ if(fn.length===args.length){ return fn(...args) }else { return (...args2)=&gt;{ return generator(...args,...args2) } } } return generator } let add=(a,b,c,d)=&gt;a+b+c+d; const curriedAdd=curry(add); let n=curriedAdd(5)(6)(7)(8)</code></pre> <pre><code class="language-markdown">var currying = function(fn) { var args = Array.prototype.slice.call(arguments, 1); return function() { if (arguments.length === 0) { return fn.apply(this, args); // 没传参数时,调用这个函数 } else { [].push.apply(args, arguments); // 传入了参数,把参数保存下来 return arguments.callee; // 返回这个函数的引用 } } } var cost = (function() { var money = 0; return function() { for (var i = 0; i &lt; arguments.length; i++) { money += arguments[i]; } return money; } })(); var cost = currying(cost, 100); cost(200); // 传入了参数,不真正求值 cost(300); // 传入了参数,不真正求值 console.log(cost()); // 求值并且输出600</code></pre> <pre><code class="language-markdown">重要 递归遍历树 来源 https://juejin.cn/post/6983904373508145189#heading-7 let arr = [ {id: 1, name: '部门1', pid: 0}, {id: 2, name: '部门2', pid: 1}, {id: 3, name: '部门3', pid: 1}, {id: 4, name: '部门4', pid: 3}, {id: 5, name: '部门5', pid: 4}, {id: 11, name: '部门10000000000', pid: 5}, {id: 12, name: '部门1000000000000000000', pid: 11}, ] // function tree(arr, pid = 0) { // return arr.filter(_ =&gt; _.pid == pid).map(_ =&gt; ({..._, children: tree(arr, _.id)})) // } //递归树 function tree(arr,pid=0){ return arr.filter(_=&gt;_.pid==pid).map(_ =&gt; ({..._, children: tree(arr, _.id)})) } //函数组合 compose function compose(...funcs) { if (funcs.length === 0) { return arg =&gt; arg; } if (funcs.length === 1) { return funcs[0]; } return funcs.reduce((a, b) =&gt; (...args) =&gt; a(b(...args))); }</code></pre>

页面列表

ITEM_HTML