回答編集履歴
3
メンテナンス性が高い
answer
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
})();
|
57
57
|
```
|
58
58
|
|
59
|
-
ただし、グローバルオブジェクトが後から変更される可能性を考慮すると、`Function#call` で明示的にグローバルオブジェクトを渡す方がメンテナンス性が高いといえます。
|
59
|
+
ただし、グローバルオブジェクトが後から変更される可能性を考慮すると、`Function#call` で明示的にグローバルオブジェクトを渡す方が**メンテナンス性が高い**といえます。
|
60
60
|
ブラウザにおけるグローバルオブジェクトはHTML文書の数だけ存在しますが、`Function#call` でグローバルオブジェクトを渡す設計なら、別のグローバルオブジェクトを渡す事で内部のグローバルオブジェクトを一括してスイッチさせることが出来ます。
|
61
61
|
|
62
62
|
Re: aaaaaaaa さん
|
2
非Strict Mode \(Non strict mode, Sloppy mode\)
answer
CHANGED
@@ -43,4 +43,20 @@
|
|
43
43
|
</script>
|
44
44
|
```
|
45
45
|
|
46
|
+
### 非Strict Mode (Non strict mode, Sloppy mode)
|
47
|
+
|
48
|
+
> strictではないときは、質問文にあるように「callを使って即時関数内でwindowを参照しているthisに対して、同じくwindowを参照しているthisを参照する」という状態になってしまうという認識であっておりますか。
|
49
|
+
|
50
|
+
その通りです。
|
51
|
+
非Strict Modeならば、`this` のデフォルト値はグローバルオブジェクトなので、`Function#call` を使わなくても結果は変わりません。
|
52
|
+
|
53
|
+
```JavaScript
|
54
|
+
(function() {
|
55
|
+
console.log(this === window); // true
|
56
|
+
})();
|
57
|
+
```
|
58
|
+
|
59
|
+
ただし、グローバルオブジェクトが後から変更される可能性を考慮すると、`Function#call` で明示的にグローバルオブジェクトを渡す方がメンテナンス性が高いといえます。
|
60
|
+
ブラウザにおけるグローバルオブジェクトはHTML文書の数だけ存在しますが、`Function#call` でグローバルオブジェクトを渡す設計なら、別のグローバルオブジェクトを渡す事で内部のグローバルオブジェクトを一括してスイッチさせることが出来ます。
|
61
|
+
|
46
62
|
Re: aaaaaaaa さん
|
1
strcit -> strict
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
```HTML
|
17
17
|
<script>
|
18
|
-
'use
|
18
|
+
'use strict'
|
19
19
|
console.log(this === window); // true
|
20
20
|
</script>
|
21
21
|
```
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
```HTML
|
26
26
|
<script>
|
27
|
-
'use
|
27
|
+
'use strict'
|
28
28
|
(function() {
|
29
29
|
console.log(this === window); // false
|
30
30
|
console.log(this === undefined); // true
|
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
```HTML
|
38
38
|
<script>
|
39
|
-
'use
|
39
|
+
'use strict'
|
40
40
|
(function() {
|
41
41
|
console.log(this === window); // true
|
42
42
|
}.call(this));
|