なっく日報

技術やら生活やらのメモ

tagged template stringを使って変数を見易く出力するの巻

Logging variables via an ES6 tagged template

のサイトより学んだことを。

ES6で導入されたtagged template string

↓な感じに整形できる。要は``形式の文字列の前に()なしの関数を挟むことができるという感じ。

function tag(strings) {
  return `tagged ${strings}`;
}

console.log(tag`test`); // tagged test

変数展開がある場合は↓なイメージ。

function tag(strings, v1, v2) {
  return `tagged ${strings[0]},${strings[1]},${v1},${v2}`;
}

let n = 1;
console.log(tag`string1${n * 1}string2${n * 2}`); // tagged string1,string2,1,2

${}で分割された文字列がtag関数の第1引数のstringsという配列に入り、残りの${}の計算結果の変数が残りのtag関数のパラメータになります。

Object Literalsの略記法と組み合わせる

var a  = 1;
{ a } // => { a: 1 }

と組み合わせることにより簡単に変数dumpできます。

function vars(str, v) {
  return Object.keys(v).map((k) => { 
    return `${k}=${v[k]}`;
  }).join(', ');
}

let a = 1;
let b = 'hoge';
console.log(vars`${{a, b}}`); // a=1, b=hoge

いろいろ使いドコロは多そうです。