teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

「function文」への指摘に対応

2016/04/26 23:31

投稿

unau
unau

スコア2468

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

追記

2016/04/26 23:31

投稿

unau
unau

スコア2468

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で生成された関数オブジェクトが代入された変数かfunction 式で定義された関数名かのいずれかです。
33
+ ご質問に戻りますと、`change()` に渡している `showValues` は、functionで生成された関数オブジェクトが代入された変数function 式で定義された関数名かのいずれかです。
34
34
 
35
- 誤解されているかもしれないので念のため付け加えておきますが、ご質問に書かれていた「カッコあり」の方も、関数呼び出しではありません。関数の定義です。関数の呼び出しは通常、関数オブジェクトの後ろに `()` をつけて呼び出すものです。
35
+ 誤解されているかもしれないので念のため付け加えておきますが、ご質問に書かれていた「カッコあり」の方も、**change() に渡しているものは**関数呼び出しではありません。関数の定義です。関数の呼び出しは通常、関数オブジェクトの後ろに `()` をつけて呼び出すものです。(**showValues() は関数の呼び出し**)