JavaScript ES6 の新しいテンプレート文字列を (問題があれば Firefox で) テストしているときに、それらの型にいくつかの矛盾があることに気付きました。
次のようなカスタム関数を定義しました。
function f(a) {
console.log(typeof(a));
console.log(a);
}
最初に、テンプレート文字列を括弧で囲んで、関数を「通常どおり」テストしました。
f(`Hello, World!`)
予想通り、これは の型をstring
生成Hello, World!
し、コンソールに出力されました。
次に、括弧なしで関数を省略形で呼び出したところ、矛盾が発生しました。
f`Hello, World!`
型が になりobject
、Array [ "Hello, World!" ]
コンソールに出力されました。
2 番目の方法を使用すると、テンプレート文字列が配列にラップされるのはなぜですか? これは単なる Firefox のバグ (ES6は新しい標準です) ですか、それとも何らかの理由でこの動作が想定されているのでしょうか?