1
00:00:01,380 --> 00:00:07,980
前のビデオでは、宣言されたオブジェクトの内部にキーワードがない場合、値はグローバルオブジェクトです。

2
00:00:08,790 --> 00:00:11,580
&nbsp;

3
00:00:11,820 --> 00:00:16,980
以前のビデオがあなたに少し混乱させてしまった場合に、宣言されたオブジェクトが意味することをすぐに実証しましょう。

4
00:00:16,980 --> 00:00:18,180
&nbsp;

5
00:00:18,180 --> 00:00:21,250
ここの資料はかなり挑戦的であることを忘れないでください。

6
00:00:21,420 --> 00:00:26,550
だから、これらのビデオを数回見て、あなたの知識を強化するためのコード例を入力してみてください。

7
00:00:28,470 --> 00:00:31,310
データと呼ばれる空のオブジェクトを作成します。

8
00:00:31,440 --> 00:00:38,650
私がやったことは、データオブジェクトが宣言されるまで存在しなかったオブジェクトとして宣言されていることです。

9
00:00:38,670 --> 00:00:45,920
今度は、このオブジェクトにinstructorというプロパティをアタッチし、値をLTEに設定します。

10
00:00:46,620 --> 00:00:55,150
今私たちが宣言したデータオブジェクトには、内部にelhiの値を持つキーがあります。

11
00:00:55,230 --> 00:00:59,200
これは、宣言されたオブジェクトの内部で言うときに意味するものです。

12
00:00:59,520 --> 00:01:01,750
まだそれがあなたを混乱させるなら、それは大丈夫です。

13
00:01:01,800 --> 00:01:07,770
2番目のルールを調べて、キーワードをオブジェクトの内側に表示すると、それはさらに意味をなされます。

14
00:01:08,820 --> 00:01:10,780
今度は最初のルールを完成させましょう。

15
00:01:11,010 --> 00:01:17,340
ここでは、関数の内部にキーワードを置くと、その値はまだグローバルオブジェクトです。

16
00:01:17,400 --> 00:01:18,290
&nbsp;

17
00:01:18,600 --> 00:01:25,800
これはキーワードが宣言されたオブジェクトの内部にあるのでなければグローバルルールが適用されると言ったことを覚えていますが、今は関数の内部にあります。

18
00:01:26,190 --> 00:01:28,590
&nbsp;

19
00:01:28,950 --> 00:01:36,270
だから私たちがこの関数を呼び出すとき、返される値はウィンドウオブジェクトです。

20
00:01:36,270 --> 00:01:38,340
さて、最後の例を見てみましょう。

21
00:01:38,640 --> 00:01:46,060
値がグローバルオブジェクトである場合、キーワードにプロパティをアタッチするとどうなりますか？

22
00:01:46,110 --> 00:01:52,590
グローバルオブジェクトとは、さまざまなjavascript環境のウィンドウオブジェクトを意味します。

23
00:01:52,680 --> 00:01:54,410
この値は変更されます。

24
00:01:54,540 --> 00:01:59,730
しかし、私たちがブラウザに入っているので、グローバルオブジェクトはウィンドウオブジェクトです。

25
00:01:59,730 --> 00:02:05,340
次に、この関数の変数をこの関数の変数で見てみましょう。

26
00:02:05,340 --> 00:02:12,100
Personという名前のキーワードにプロパティを添付し、Ellieと同じに設定します。

27
00:02:12,420 --> 00:02:20,010
キーワードはグローバルオブジェクトを参照するため、グローバルオブジェクトに追加するものはグローバル変数になります。つまり、関数外で使用できます。

28
00:02:20,370 --> 00:02:23,340
&nbsp;

29
00:02:23,340 --> 00:02:28,930
これは私たちがやりたいことのように思えるかもしれませんが、実際これは非常に悪い習慣です。

30
00:02:29,670 --> 00:02:34,680
変数とスコープがjavascriptでどのように機能するかをすぐに見直しましょう。

31
00:02:34,680 --> 00:02:39,780
私はdogと呼ばれる変数を宣言し、値はRustyと等しいと言っています。

32
00:02:39,810 --> 00:02:47,100
私は次に、肉体と呼ばれる関数を内部で作成し、VARキーワードを使ってpersonという変数を宣言し、それをコードと同じにします。

33
00:02:47,100 --> 00:02:50,610
&nbsp;

34
00:02:50,790 --> 00:02:57,420
私はこの変数を関数の中で宣言していたので、それを返すわけではありません。関数の外部にアクセスすることはできません。

35
00:02:57,420 --> 00:03:00,430
&nbsp;

36
00:03:00,450 --> 00:03:07,410
しかし、私はグローバルな範囲で私の犬の変数を宣言して以来、私はどこにでもアクセスできます。

37
00:03:08,160 --> 00:03:13,830
これで、関数内のVARキーワードを省略することで、person変数にアクセスできないという問題を回避することができます。

38
00:03:13,830 --> 00:03:16,020
&nbsp;

39
00:03:16,020 --> 00:03:18,900
しかし、これは非常に悪い習慣です。

40
00:03:18,960 --> 00:03:24,900
一般的には、複数の関数で使用するすべての変数をコードの先頭に宣言し、値を持たなくても後でそれらの値を関数に代入することがベストプラクティスです。

41
00:03:25,110 --> 00:03:31,590
&nbsp;

42
00:03:31,680 --> 00:03:34,370
&nbsp;

43
00:03:34,380 --> 00:03:41,550
残念なことに、これはグローバルオブジェクトであるため、関数内で大域変数を誤って宣言するのは非常に簡単です。

44
00:03:41,550 --> 00:03:44,400
&nbsp;

45
00:03:44,400 --> 00:03:47,340
例を見てみましょう。

46
00:03:47,340 --> 00:03:54,300
私は間違いと呼ばれる関数を作成しようとしています。これは、文字列に等しいという悪い考え方と呼ばれるキーワードのプロパティを内側に設定します。

47
00:03:54,300 --> 00:03:57,060
&nbsp;

48
00:03:57,100 --> 00:03:58,480
うわー。

49
00:03:58,770 --> 00:04:05,400
今私はその関数を呼び出すつもりです。私は私の悪いアイデア変数にアクセスできることがわかります。

50
00:04:05,400 --> 00:04:09,390
私は偶然、グローバル変数を作成しました。

51
00:04:09,390 --> 00:04:16,290
ありがたいことにはいはい5厳密なモードと呼ばれるJavascriptの以前のバージョンが私たちを助けるために追加されました。

52
00:04:16,290 --> 00:04:16,440
&nbsp;

53
00:04:16,440 --> 00:04:21,870
Javascriptの開発者は、厳密モードが有効になっている場合にはより適切な対処法を読み込みます。

54
00:04:21,960 --> 00:04:26,460
二重引用符で厳密なuseを追加することで、これを行うことができます。

55
00:04:26,670 --> 00:04:31,760
関数の内部が未定義のときのキーワードthisの値。

56
00:04:31,800 --> 00:04:34,530
グローバルオブジェクトではありません。

57
00:04:34,530 --> 00:04:38,870
つまり、プロパティをその上にアタッチしようとすると、型エラーが発生します。

58
00:04:38,940 --> 00:04:44,270
未定義にプロパティを付けることはできないので、このエラーはかなり見られたかもしれません。

59
00:04:44,280 --> 00:04:50,440
これは、誤ってグローバル変数を作成するのを止め、javascriptのベストプラクティスを使用できるようにします。

60
00:04:52,140 --> 00:04:57,660
このビデオでは、このキーワードを決定するための最初のルールを見直し、誤って関数内でグローバル変数を作成する方法を見ました。

61
00:04:57,720 --> 00:05:00,860
&nbsp;

62
00:05:00,870 --> 00:05:06,410
私たちはまた、次のビデオでこの厳しいモードがいかに厳格なミスをしてしまうのを防ぐことができるかを見ました。

63
00:05:06,450 --> 00:05:12,330
2番目のルールについて議論し、宣言されたオブジェクトの内部にあるときのキーワードの値

64
00:05:12,330 --> 00:05:14,190
&nbsp;
