回答編集履歴

3

説明がおかしい点を訂正

2019/02/04 09:34

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -32,19 +32,23 @@
32
32
 
33
33
 
34
34
 
35
- のような文法です。
35
+ のような文法です。例えば
36
36
 
37
37
 
38
38
 
39
+ ```js
40
+
41
+ 関数 `固定部1${式1}固定部2${式2}固定部3${式3}固定部4`
42
+
43
+ ```
44
+
39
- テンプレートリテラルの中の固定部分と埋め込まれた式を評価した結果が
45
+ のように記述するとテンプレートリテラルの中の固定部分と埋め込まれた式を評価した結果が
40
46
 
41
47
 
42
48
 
49
+ ['固定部1', '固定部2', '固定部3', '固定部4']
43
50
 
44
-
45
- ['A', 'B', 'C', '...']
46
-
47
- [exp1の評価結果, exp2の評価結果, exp3の評価結果]
51
+ [1の評価結果, 2の評価結果, 3の評価結果]
48
52
 
49
53
 
50
54
 
@@ -52,7 +56,7 @@
52
56
 
53
57
 
54
58
 
55
- ただテンプレートリテラルの中の固定部分(文字列の配列)は第一引数に渡されるけれど、テンプレートリテラルに埋め込まれた各式の結果は第二引数へ配列として渡されるのではなく最初の式が第二引数、次の式が第三引数、・・・のように可変個の引数として渡される仕様のようです。
59
+ ただテンプレートリテラルの中の固定部分(文字列の配列)は第一引数に渡されるけれど、テンプレートリテラルに埋め込まれた各式の結果は第二引数へ配列として渡されるのではなく最初の式の評価結果が第二引数、次の式の評価結果が第三引数、・・・のように可変個の引数として渡される仕様のようです。
56
60
 
57
61
 
58
62
 

2

追記

2019/02/04 09:34

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -103,3 +103,11 @@
103
103
  argsには[2, 4]が渡される
104
104
 
105
105
  ```
106
+
107
+
108
+
109
+ さらに追記
110
+
111
+ [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings)
112
+
113
+ このあたりがもっと詳しい解説なので参考になると思います。raw stringsのメカニズムなんかの説明もあります。

1

追記

2019/02/04 02:05

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  ```js
60
60
 
61
- f `A${1+1}B${2+2}C`
61
+ f `A${1 + 1}B${2 + 2}C`
62
62
 
63
63
 
64
64
 
@@ -66,10 +66,40 @@
66
66
 
67
67
 
68
68
 
69
- f(['A', 'B', 'C'], 1+1, 2+2)
69
+ f(['A', 'B', 'C'], 2, 4)
70
70
 
71
71
  ```
72
72
 
73
73
 
74
74
 
75
75
  のような関数呼び出しとして解釈されるということですね。
76
+
77
+
78
+
79
+ おっと書き忘れ・・・こういう引数を受け取る場合第一引数は
80
+
81
+ formats
82
+
83
+ のようにただ一つの仮引数で受け取りますが、第二引数以降は可変個数の引数なので
84
+
85
+ ...args
86
+
87
+ のように...を仮引数の前に書く必要があります。こうすると複数のカンマ区切りの引数が配列としてargsに入ってくれます。
88
+
89
+
90
+
91
+ ```js
92
+
93
+ function f(formats, ...args) { ... }
94
+
95
+
96
+
97
+ f(['A', 'B', 'C'], 2, 4)
98
+
99
+ ==>
100
+
101
+ formatsには['A', 'B', 'C']が渡され
102
+
103
+ argsには[2, 4]が渡される
104
+
105
+ ```