アロー関数で再帰

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;
}