回答編集履歴

3

メンテナンス性が高い

2017/08/01 10:34

投稿

think49
think49

スコア18166

test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
 
116
116
 
117
- ただし、グローバルオブジェクトが後から変更される可能性を考慮すると、`Function#call` で明示的にグローバルオブジェクトを渡す方がメンテナンス性が高いといえます。
117
+ ただし、グローバルオブジェクトが後から変更される可能性を考慮すると、`Function#call` で明示的にグローバルオブジェクトを渡す方が**メンテナンス性が高い**といえます。
118
118
 
119
119
  ブラウザにおけるグローバルオブジェクトはHTML文書の数だけ存在しますが、`Function#call` でグローバルオブジェクトを渡す設計なら、別のグローバルオブジェクトを渡す事で内部のグローバルオブジェクトを一括してスイッチさせることが出来ます。
120
120
 

2

非Strict Mode \(Non strict mode, Sloppy mode\)

2017/08/01 10:34

投稿

think49
think49

スコア18166

test CHANGED
@@ -88,4 +88,36 @@
88
88
 
89
89
 
90
90
 
91
+ ### 非Strict Mode (Non strict mode, Sloppy mode)
92
+
93
+
94
+
95
+ > strictではないときは、質問文にあるように「callを使って即時関数内でwindowを参照しているthisに対して、同じくwindowを参照しているthisを参照する」という状態になってしまうという認識であっておりますか。
96
+
97
+
98
+
99
+ その通りです。
100
+
101
+ 非Strict Modeならば、`this` のデフォルト値はグローバルオブジェクトなので、`Function#call` を使わなくても結果は変わりません。
102
+
103
+
104
+
105
+ ```JavaScript
106
+
107
+ (function() {
108
+
109
+ console.log(this === window); // true
110
+
111
+ })();
112
+
113
+ ```
114
+
115
+
116
+
117
+ ただし、グローバルオブジェクトが後から変更される可能性を考慮すると、`Function#call` で明示的にグローバルオブジェクトを渡す方がメンテナンス性が高いといえます。
118
+
119
+ ブラウザにおけるグローバルオブジェクトはHTML文書の数だけ存在しますが、`Function#call` でグローバルオブジェクトを渡す設計なら、別のグローバルオブジェクトを渡す事で内部のグローバルオブジェクトを一括してスイッチさせることが出来ます。
120
+
121
+
122
+
91
123
  Re: aaaaaaaa さん

1

strcit -> strict

2017/08/01 10:27

投稿

think49
think49

スコア18166

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  <script>
34
34
 
35
- 'use strcit'
35
+ 'use strict'
36
36
 
37
37
  console.log(this === window); // true
38
38
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  <script>
52
52
 
53
- 'use strcit'
53
+ 'use strict'
54
54
 
55
55
  (function() {
56
56
 
@@ -74,7 +74,7 @@
74
74
 
75
75
  <script>
76
76
 
77
- 'use strcit'
77
+ 'use strict'
78
78
 
79
79
  (function() {
80
80