はじめに
最近よく見るようになった
export const StyleWrapper = styled.div`
--fc-button-bg-color: #3b82f6;
`
のような記法について、よく理解できてなかったので調べた
疑問
- ヒアドキュメントみたいな記法がわかってない
まとめ
- 関数呼び出し
- 第一引数: 文字列配列
- 第二引数以降:
${...}
で評価された結果が渡る - 以下が全て
const person = "Mike"; const age = 28; function myTag(strings, personExp, ageExp) { const str0 = strings[0]; // "That " const str1 = strings[1]; // " is a " const str2 = strings[2]; // "." const ageStr = ageExp < 100 ? "youngster" : "centenarian"; // We can even return a string built using a template literal return `${str0}${personExp}${str1}${ageStr}${str2}`; } const output = myTag`That ${person} is a ${age}.`; console.log(output); // That Mike is a youngster.
以下詳細
- 名前は
Tagged Template Literals
ES6(2015) の機能 - JavaScript の Template literals(テンプレート文字列)の拡張
- テンプレート文字列は、バッククォート(`)文字で囲まれた文字列で、複数行の文字列や文字列内の式のインターポレーションが可能
- タグ付きテンプレート(
Template literals (Template strings) - JavaScript | MDN
)
テンプレート リテラルのより高度な形式は、タグ付きテンプレートです。 タグを使用すると、関数を使用してテンプレートリテラルを解析できます。 タグ関数の最初の引数には、文字列値の配列が含まれます。 残りの引数は式に関連します。 タグ関数は、これらの引数に対して必要な操作を実行し、 操作された文字列を返すことができます。 (あるいは、次の例のいずれかで説明するように、まったく異なるものを返すこともできます。)
- タグ関数とバッククォートの間に空白は入れられるが、一般的にはそんなことはしない
- 実際に動いたけど、ChatGPTちゃんはそんなことはしねーよと言っている
- HOF: Higher Order Function
- 高階関数のこと
- 関数を引数にとったり、関数を戻したりする関数の事
- 高階関数のこと