アロー関数で再帰
JavaScript アロー関数で再帰
有ろうことか!アロー関数で再帰ができるとは知らなかった。
let func = ((cbFunc = arg=> { ... }) => cbFunc)()
const fibonacci = ((fb= n=> n > 1 ? fb(n-2) + fb(n-1): n)=> fb)(); console.log(fibonacci (9));//-> 34 </script>
アロー関数(n=> n > 1 ? n * fb(n-1): 1)を変数(fb)に代入し、
その代入した関数を即時関数によって関数(fb)として返すように
代入(fibonacci )する
これは思いつかなかった
オブジェクトをDOMにして追加する。(かなり短い)
// append (document.body, {tag: 'h1', textContent: 'Test', child:[{tag:'label', textContent: 'version'}]); // <h1>Test<label>version</label></h1> let append = ((f=(a,b,c,{tag:T,child:C,...O}=b)=>Array.isArray(b)?b.reduce((a,b)=>append(a,b),a):(Object.assign(a.appendChild(c=document.createElement(T)),O),C&&append(c,C),a))=>f)();
原形
それにしても document.createDocumentFragment は長い。
function append (e, arg) { let fgm = document.createDocumentFragment (); if (Array.isArray (arg)) { arg.forEach (a=> append (fgm, a)); } else if (Object === arg.constructor) { let {tag, child, ...attr} = arg, e = Object.assign (fgm.appendChild (document.createElement (tag)), attr); if (child) append (e, child); } e.appendChild (fgm); return e; }