回答編集履歴
2
「function文」への指摘に対応
answer
CHANGED
@@ -32,4 +32,10 @@
|
|
32
32
|
```
|
33
33
|
ご質問に戻りますと、`change()` に渡している `showValues` は、「function文で生成された関数オブジェクトが代入された変数」か「function 式で定義された関数名」かのいずれかです。
|
34
34
|
|
35
|
-
誤解されているかもしれないので念のため付け加えておきますが、ご質問に書かれていた「カッコあり」の方も、**change() に渡しているものは**関数呼び出しではありません。関数の定義です。関数の呼び出しは通常、関数オブジェクトの後ろに `()` をつけて呼び出すものです。(**showValues() は関数の呼び出し**)
|
35
|
+
誤解されているかもしれないので念のため付け加えておきますが、ご質問に書かれていた「カッコあり」の方も、**change() に渡しているものは**関数呼び出しではありません。関数の定義です。関数の呼び出しは通常、関数オブジェクトの後ろに `()` をつけて呼び出すものです。(**showValues() は関数の呼び出し**)
|
36
|
+
|
37
|
+
---
|
38
|
+
2016-04-27 追記
|
39
|
+
「function 文」という用語は正しくなく、「関数宣言」とすべき、とのご指摘をいただきました。
|
40
|
+
「function 式」の方もあわせて「関数式」と置き換えるとよさそうです。
|
41
|
+
詳しくは、[関数と変数の巻き上げの違いとは - teratail](https://teratail.com/questions/33002) に対する私の回答への [think49](https://teratail.com/users/think49) さんのコメントをご覧ください。
|
1
追記
answer
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
var y = 3;
|
14
14
|
console.log(add2(y)); // (2) add2() に変数に入った整数を渡す
|
15
15
|
```
|
16
|
-
のように、リテラルあるいは変数で実引数を渡せますが、関数を引数にとるような関数でも同じようなことができます。
|
16
|
+
のように、「整数リテラル」あるいは「変数に入った整数」で実引数を渡せますが、関数を引数にとるような関数でも同じようなことができます。
|
17
17
|
```javascript
|
18
18
|
function execTwice(func) {
|
19
19
|
console.log([func(1), func(2)];
|
@@ -25,11 +25,11 @@
|
|
25
25
|
var sub2 = function(x) { return x - 2; };
|
26
26
|
execTwice(sub2); // (2) execTwice() に変数に入った関数を渡す
|
27
27
|
```
|
28
|
-
というように関数リテラルあるいは変数に入った関数を、実引数として関数 (`execTwice`) に渡せます。
|
28
|
+
というように「関数リテラル」あるいは「変数に入った関数」を、実引数として関数 (`execTwice`) に渡せます。
|
29
29
|
また、関数の場合は、先の `add2()` のように**function文**で定義した関数を名前で渡すことができます (`sub2` の方は**function式** で定義)。
|
30
30
|
```javascript
|
31
31
|
execTwice(add2); // (3) execTwice() に function 文で定義した関数を渡す
|
32
32
|
```
|
33
|
-
ご質問に戻りますと、`change()` に渡している `showValues` は、function
|
33
|
+
ご質問に戻りますと、`change()` に渡している `showValues` は、「function文で生成された関数オブジェクトが代入された変数」か「function 式で定義された関数名」かのいずれかです。
|
34
34
|
|
35
|
-
誤解されているかもしれないので念のため付け加えておきますが、ご質問に書かれていた「カッコあり」の方も、関数呼び出しではありません。関数の定義です。関数の呼び出しは通常、関数オブジェクトの後ろに `()` をつけて呼び出すものです。
|
35
|
+
誤解されているかもしれないので念のため付け加えておきますが、ご質問に書かれていた「カッコあり」の方も、**change() に渡しているものは**関数呼び出しではありません。関数の定義です。関数の呼び出しは通常、関数オブジェクトの後ろに `()` をつけて呼び出すものです。(**showValues() は関数の呼び出し**)
|