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

回答編集履歴

7

アロー関数のコードブロック位置がずれていたのを修正

2019/11/20 09:17

投稿

think49
think49

スコア18194

answer CHANGED
@@ -63,6 +63,10 @@
63
63
 
64
64
  アロー関数でも「即時関数」を書けます。
65
65
 
66
+ ```JavaScript
67
+ (() => 6)(); // 6
68
+ ```
69
+
66
70
  ### remodal.js
67
71
 
68
72
  - [Remodal/remodal_test.js at master · vodkabears/Remodal](https://github.com/vodkabears/Remodal/blob/master/test/remodal_test.js)
@@ -82,9 +86,4 @@
82
86
 
83
87
  特定のライブラリのコードであれば、制作者に尋ねるのが最良と私は思います。
84
88
 
85
-
86
- ```JavaScript
87
- (() => 6)(); // 6
88
- ```
89
-
90
89
  Re: ZET さん

6

remodal.js

2019/11/20 09:16

投稿

think49
think49

スコア18194

answer CHANGED
@@ -63,7 +63,27 @@
63
63
 
64
64
  アロー関数でも「即時関数」を書けます。
65
65
 
66
+ ### remodal.js
67
+
68
+ - [Remodal/remodal_test.js at master · vodkabears/Remodal](https://github.com/vodkabears/Remodal/blob/master/test/remodal_test.js)
69
+
66
70
  ```JavaScript
71
+ !(function($, location, document) {
72
+ // 中略
73
+ }(window.jQuery || window.Zepto, location, document));
74
+ ```
75
+
76
+ 少なくとも、コード単体で見た場合、`!` は**無意味な演算子**です。
77
+ 返り値を使うでもなく、`()` で既に式文になっているわけですから。
78
+
79
+ 先頭にセミコロン挿入のように、前述のコードに働く何がしかの対策かもしれませんが、思いつきません。
80
+
81
+ - [ライブラリ 先頭 セミコロン - Google 検索](https://www.google.com/search?q=%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA+%E5%85%88%E9%A0%AD+%E3%82%BB%E3%83%9F%E3%82%B3%E3%83%AD%E3%83%B3&oq=%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA+%E5%85%88%E9%A0%AD+%E3%82%BB%E3%83%9F%E3%82%B3%E3%83%AD%E3%83%B3&ie=UTF-8)
82
+
83
+ 特定のライブラリのコードであれば、制作者に尋ねるのが最良と私は思います。
84
+
85
+
86
+ ```JavaScript
67
87
  (() => 6)(); // 6
68
88
  ```
69
89
 

5

表現の修正

2019/11/19 13:04

投稿

think49
think49

スコア18194

answer CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  「即時関数」を定義する場合、
22
22
 
23
- - 変数名を未定義で即実行
23
+ - 変数未定義で即実行
24
24
  - 単体の文として成立する
25
25
 
26
26
  という状況が多いと思いますが、その場合、式文(Expression Statement)として成り立たなければなりません。

4

表現の修正

2019/11/19 12:35

投稿

think49
think49

スコア18194

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  function bar () {}(); // SyntaxError: Unexpected token ')'
35
35
  ```
36
36
 
37
- "function" で始まらなければ、式文(Expression Statement)の中で即時関数を書くための条件が揃います。
37
+ "function" で始まらなければ、式文(Expression Statement)の必要条件を満たし、即時関数を書ます。
38
38
 
39
39
  ```JavaScript
40
40
  (function () { return 1; })(); // 1

3

一つの書き方にとらわれず

2019/11/19 12:34

投稿

think49
think49

スコア18194

answer CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  このように、即時関数は特定の**構文**を指す呼称ではありません。
52
52
  「関数定義後に即実行する」という**用途**で、即時関数と呼ばれます。
53
- 書き方は多種多様なので、一つ書き方にわれず、他のパターンも考えてみると視野が広がるでしょう。
53
+ 書き方は多種多様なので、一つ書き方にとらわれず、他のパターンも考えてみると視野が広がるでしょう。
54
54
 
55
55
  別例としては、再帰呼び出しする書き方があります。
56
56
 

2

式文(Expression Statement)の中で

2019/11/19 12:29

投稿

think49
think49

スコア18194

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  function bar () {}(); // SyntaxError: Unexpected token ')'
35
35
  ```
36
36
 
37
- "function" で始まらなければ、即時関数を書くための条件が揃います。
37
+ "function" で始まらなければ、式文(Expression Statement)の中で即時関数を書くための条件が揃います。
38
38
 
39
39
  ```JavaScript
40
40
  (function () { return 1; })(); // 1

1

コメントの修正

2019/11/19 12:26

投稿

think49
think49

スコア18194

answer CHANGED
@@ -38,10 +38,14 @@
38
38
 
39
39
  ```JavaScript
40
40
  (function () { return 1; })(); // 1
41
- (function () { return 2; }()); // 1
41
+ (function () { return 2; }()); // 2
42
42
  +function () { return 3; }(); // 3
43
43
  -function () { return 4; }(); // -4
44
44
  !function () { return 5; }(); // false
45
+
46
+ /**
47
+ * 返り値を使わない場合、"()" を使うコード以外は「余計な処理」が働きます
48
+ */
45
49
  ```
46
50
 
47
51
  このように、即時関数は特定の**構文**を指す呼称ではありません。