回答編集履歴

3

語弊

2017/06/09 22:22

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- …といっても,実際は保守性を高めるために**ファイル単位でコードを分割するのが普通**なので,上記はあくまで一つの理想論に過ぎません。
5
+ …といっても,実際は保守性を高めるために複数ファイルコードを分割するのが普通なので,上記はあくまで一つの理想論に過ぎません。(最近は更に分割されたコードを1ファイルのみにバンドルして配布するという形が主流です)
6
6
 
7
7
 
8
8
 

2

やっぱり復活させた

2017/06/09 22:22

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -3,3 +3,67 @@
3
3
 
4
4
 
5
5
  …といっても,実際は保守性を高めるために**ファイル単位でコードを分割するのが普通**なので,上記はあくまで一つの理想論に過ぎません。
6
+
7
+
8
+
9
+ ----
10
+
11
+
12
+
13
+ ちなみにPHPの場合,関数宣言の形で書いた場合**すべてグローバルに定義される**という特徴がありますが,JavaScriptは全く異なります。
14
+
15
+
16
+
17
+ ```javascript
18
+
19
+ function func1() {
20
+
21
+ function func_child1() {
22
+
23
+ ...
24
+
25
+ }
26
+
27
+ function func_child2() {
28
+
29
+ ...
30
+
31
+ }
32
+
33
+ }
34
+
35
+ ```
36
+
37
+
38
+
39
+ これは概ね以下と同じ意味です。要するに,そのスコープのみ有効なクロージャを関数式で作っているのと同じです。
40
+
41
+
42
+
43
+ ```javascript
44
+
45
+ var func1 = function func1() {
46
+
47
+ var func_child1 = function func_child1() {
48
+
49
+ ...
50
+
51
+ }
52
+
53
+ var func_child2 = function func_child2() {
54
+
55
+ ...
56
+
57
+ }
58
+
59
+ }
60
+
61
+ ```
62
+
63
+
64
+
65
+ - [JavaScriptでクラスを実現するための基本 - Qiita](http://qiita.com/kotarella1110/items/9ee2404ef31f47932cc6)
66
+
67
+
68
+
69
+ 上記のメソッド定義のように,後からそれを何らかの形で参照する場合は定義する意味があります。そのスコープ内のどこからも参照されないなら定義する意味はありません。

1

趣旨が違ったので回答を変更

2017/06/09 22:20

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -1,125 +1,5 @@
1
- JavaScriptの関数宣言PHPのそれと全く異なりま。PHPの場合関数宣言の形で書いた場合**すべグローバル定義される**という特徴があすがJavaScriptます。
1
+ 定義する場所どこであってもいいずで,**出来るだけ外に出さなくいいものは内側閉じ込めておく**という本来のオブジェクト指向のるべき姿なので,onload関連でしか使わないものをそこにとめて書いているというだけででしょうか?
2
2
 
3
3
 
4
4
 
5
-
6
-
7
- ```javascript
8
-
9
- function func1() {
10
-
11
- function func_child1() {
12
-
13
- ...
14
-
15
- }
16
-
17
- function func_child2() {
18
-
19
- ...
20
-
21
- }
22
-
23
- }
24
-
25
- ```
26
-
27
-
28
-
29
- これは概ね以下と同じ意味です。要するに,そのスコープのみ有効なクロージャを関数式で作っているのと同じです。
30
-
31
-
32
-
33
- ```javascript
34
-
35
- var func1 = function func1() {
36
-
37
- var func_child1 = function func_child1() {
38
-
39
- ...
40
-
41
- }
42
-
43
- var func_child2 = function func_child2() {
44
-
45
- ...
46
-
47
- }
48
-
49
- }
50
-
51
- ```
52
-
53
-
54
-
55
- それゆえに,関数宣言を含む関数を即時実行するだけでは何の意味もありません。
56
-
57
-
58
-
59
- [JavaScriptでクラスを実現するための基本 - Qiita](http://qiita.com/kotarella1110/items/9ee2404ef31f47932cc6)
60
-
61
-
62
-
63
- 単なる関数宣言ではなく,特定のプロトタイプに属するメソッドの定義のこにつて言ってるのではしょうか?これ大いに意味が
5
+ といっても,実際は保守性を高めために**ファイル単位でコードを分割するが普通**,上記はあで一つの理想論に過ぎません
64
-
65
-
66
-
67
- > ```javascript
68
-
69
- > var Person = (function() {
70
-
71
- > // クラス内定数
72
-
73
- > var COUNTRY = 'Japan';
74
-
75
- >
76
-
77
- > // コンストラクタ
78
-
79
- > var Person = function (name, age) {
80
-
81
- > if (!(this instanceof Person)) {
82
-
83
- > return new Person(name, age);
84
-
85
- > }
86
-
87
- >
88
-
89
- > this.name = name;
90
-
91
- > this.age = age;
92
-
93
- > }
94
-
95
- >
96
-
97
- > var p = Person.prototype;
98
-
99
- >
100
-
101
- > // プロトタイプ内でメソッドを定義
102
-
103
- > p.setName = function(name) {
104
-
105
- > this.name = name;
106
-
107
- > }
108
-
109
- > p.getName = function() {
110
-
111
- > return this.name;
112
-
113
- > }
114
-
115
- >
116
-
117
- > return Person;
118
-
119
- > })();
120
-
121
- > ```
122
-
123
-
124
-
125
- 上記の場合, PersonのインスタンスからsetNameとgetNameを実行することができます。