ジャバスクリプト、バッククォートの素晴らしい活用
テンプレートリテラル以外に何がある?
バッククォート
Windowsキーボードのチルダキーにあるこれ。` がバッククォートである。 バッククォートにはテンプレートリテラル以外に、関数を呼び出す機能もある。(ㄷㄷ!)
テンプレートリテラル
const name = "wichan";
const str = `hello ${name}!`;
// result: hello wichan!
console.log(str);これをテンプレートリテラルと呼ぶ。
タグ付きテンプレート
さて、このタグ付きテンプレートのためにポストした。
function fun(arg) {
console.log(arg);
}
// result: funny javascript
fun("funny javascript");
// result: [ 'funny javascript' ]
fun`funny javascript`;バッククォートで関数を呼び出すことに成功した。でもなぜargが配列として入ってきたのだろうか?
こんな時に使う。
実は、バッククォートで関数を呼び出す時、渡される引数がもっとある。 次の例を見よう。
const name = "wichan";
const age = 25;
function intro(strings, ...values) {
console.log(strings);
console.log(values);
}
/** result:
* strings: ['my name is ', ' and i am ', ' years old.']
* values: ['wichan', 25]
*/
intro`my name is ${name} and i am ${age} years old.`;バッククォートで関数を呼び出す場合、最初の引数としてテンプレートを制限された文字列配列、その後にテンプレート値を引数として提供する。 関数に文字列を入力する時、テンプレート変数と文字列を分離する時に使用できる。
隠された機能がもう一つある。
実はタグ付きテンプレートには隠された機能がもう一つある。
function fun(strings) {
console.log(strings);
console.log(strings.raw);
}
/** result:
* [ 'directory: C:System32etc...' ]
* [ 'directory: C:\\System32\\etc...' ]
*/
fun`directory: C:\System32\etc...`;エスケープされていない元の文字列を示す。
終わり