1
00:00:00,270 --> 00:00:05,310
このビデオでは、javascriptでscopeという概念を説明します。

2
00:00:05,310 --> 00:00:09,640
スコープとは、コードが実行されているコンテキストを指します。

3
00:00:09,900 --> 00:00:14,610
だから、どこかにコードがあるところは、それがSay helloという関数の中にあるとしよう。

4
00:00:15,210 --> 00:00:18,550
そのコードは特定のコンテキストで実行されています。

5
00:00:18,720 --> 00:00:23,970
したがって、いくつかの変数があり、いくつかのプロパティを持つ可能性があり、スコープは、その関数で表示される変数とプロパティを参照しています。

6
00:00:23,970 --> 00:00:27,620
&nbsp;

7
00:00:27,750 --> 00:00:32,820
そして、それは別の関数の中で異なっているかもしれません。

8
00:00:32,820 --> 00:00:33,290
&nbsp;

9
00:00:33,360 --> 00:00:34,740
あなたができることは何ですか。

10
00:00:34,950 --> 00:00:39,070
さまざまなスコープがあり、異なる変数が表示されることがあります。

11
00:00:39,150 --> 00:00:41,490
だから、これはいくつかの例で意味をなさないでしょう。

12
00:00:41,490 --> 00:00:46,830
これは間違いなく難しく複雑なトピックですが、私はあなたのためにそれを簡素化するために最善を尽くします。

13
00:00:46,830 --> 00:00:47,950
&nbsp;

14
00:00:48,660 --> 00:00:50,880
ここから簡単なものから始めましょう。

15
00:00:50,880 --> 00:01:03,720
関数宣言関数を宣言すると、変数xが40に等しいと宣言するだけで、そのログXがキャンセルされます。

16
00:01:03,720 --> 00:01:09,390
それで、数学をやり、彼らは40点をプリントアウトしましょう。

17
00:01:09,690 --> 00:01:10,980
&nbsp;

18
00:01:14,040 --> 00:01:15,970
このスコープ内のこの関数の内部では、xとは40となります。

19
00:01:16,320 --> 00:01:22,720
しかし、私がXにアクセスしようとすると機能の外で何が起こると思いますか。

20
00:01:22,740 --> 00:01:28,760
私はxが定義されていないと私に伝えるエラーを得る。

21
00:01:29,760 --> 00:01:32,810
だから、これが私たちに示していることは、この関数の中に2つの異なるスコープが1つのコンテキストであるということです。

22
00:01:32,880 --> 00:01:38,650
&nbsp;

23
00:01:38,760 --> 00:01:45,150
Xはここで定義されていますが、それ以外は定義されていません。

24
00:01:45,150 --> 00:01:46,200
Xと入力すると、Xが何であるかわからないため、エラーが発生します。

25
00:01:46,350 --> 00:01:49,900
この範囲では表示されません。

26
00:01:49,920 --> 00:01:52,840
だからxをxとすると、これを単にlowと呼ぶことにする。

27
00:01:53,010 --> 00:02:01,200
今私がグローバルスコープ内でこの機能の外にいるときに私がXにアクセスすると、私はそれを取得します。

28
00:02:01,260 --> 00:02:07,020
こんにちは。

29
00:02:07,030 --> 00:02:07,810
だからこの文脈ではXはこんにちは。

30
00:02:08,160 --> 00:02:10,450
しかし、私が再び数学をやり遂げると、今度は何が起こると思いますか？

31
00:02:10,770 --> 00:02:17,200
この文脈の中ではまだ40です。

32
00:02:17,400 --> 00:02:21,180
それは本当に重要です。

33
00:02:21,180 --> 00:02:22,490
関数を作成するときには、独自のスコープを持ち、独自の変数セットを持ちます。

34
00:02:22,800 --> 00:02:27,250
&nbsp;

35
00:02:27,510 --> 00:02:33,060
それは、関数の代わりに、関数の外で定義された変数にアクセスすることはできません。

36
00:02:33,060 --> 00:02:33,770
そこで例を紹介します。

37
00:02:33,960 --> 00:02:35,290
&nbsp;

38
00:02:35,520 --> 00:02:42,890
私はここですべてをクリアするつもりですが、今度は変数Y変数を使用しましょう。yは9 9に等しいです。

39
00:02:42,890 --> 00:02:43,700
したがって、グローバルな範囲で私はyにアクセスすることができます。

40
00:02:44,280 --> 00:02:47,510
&nbsp;

41
00:02:47,610 --> 00:02:52,380
今私が関数を宣言すれば、私はそのログを取り消したいなら、これをもっと計算してみましょう。

42
00:02:56,100 --> 00:02:58,260
なぜあなたにはエラーがあると思いますか？

43
00:02:58,260 --> 00:03:01,220
または、これはうまく動作しますか？

44
00:03:01,500 --> 00:03:03,360
括弧で数学をやってみましょう。

45
00:03:04,230 --> 00:03:08,480
そしてそれは私に99を与えます。

46
00:03:08,850 --> 00:03:10,420
&nbsp;

47
00:03:10,830 --> 00:03:17,310
関数の外部に何かを定義すると、その関数の中に関数にアクセスすることができるということです。

48
00:03:17,310 --> 00:03:19,520
これを子スコープと考えてください。

49
00:03:19,530 --> 00:03:21,780
&nbsp;

50
00:03:21,900 --> 00:03:27,630
これはより具体的にはより深いレベルにドリルダウンすることであり、子スコープは親スコープで見つけるものにアクセスできます。

51
00:03:27,630 --> 00:03:30,200
もしその類推があなたが先に進み、それを実行するのに役立つならば。

52
00:03:30,300 --> 00:03:32,900
しかし、基本的には、関数の外で変数を定義すると、その関数内で変数を使うことができます。

53
00:03:33,090 --> 00:03:38,530
しかし、その反対は真実ではありません。

54
00:03:39,210 --> 00:03:41,840
ここに別の例があります。

55
00:03:43,020 --> 00:03:44,390
数学の中でyの値を実際に変えるとどうなりますか？

56
00:03:44,460 --> 00:03:50,290
だから私はなぜ100に等しいと言う。

57
00:03:50,370 --> 00:03:56,260
そしてyを印刷します。

58
00:03:56,550 --> 00:03:58,200
この場合、どうなると思いますか？

59
00:03:58,710 --> 00:04:02,090
それは試みです。

60
00:04:02,330 --> 00:04:03,260
だから今yが何であるかを見てみましょう。

61
00:04:03,510 --> 00:04:05,060
それは90です。

62
00:04:05,070 --> 00:04:06,130
&nbsp;

63
00:04:06,430 --> 00:04:07,920
そして、私が数学をすると100をプリントアウトします。

64
00:04:13,050 --> 00:04:14,910
したがって、関数yの内部は100にあり、それは100を出力します。

65
00:04:14,910 --> 00:04:19,080
しかし、機能の外側はどうですか？

66
00:04:19,080 --> 00:04:21,370
私がYと入力すればどうなるでしょう。

67
00:04:21,720 --> 00:04:23,960
それはまた100です。

68
00:04:24,210 --> 00:04:26,160
だからここで何が起こったのかというと、私は最初にグローバルスコープ内の関数の外に'99として宣言しています。

69
00:04:26,610 --> 00:04:33,930
そして、関数の中で私はyを変更しました。

70
00:04:34,380 --> 00:04:37,820
&nbsp;

71
00:04:37,980 --> 00:04:44,850
したがって、これはスコープ内に新しい変数yを宣言していないので、ここで宣言された古い変数を実際に見つけて変更しました。

72
00:04:44,850 --> 00:04:47,670
それでここに。

73
00:04:47,670 --> 00:04:49,770
なぜ100歳で、なぜ100歳なのか？

74
00:04:49,770 --> 00:04:54,280
ここでもう1つの例を挙げてみましょう。

75
00:04:54,300 --> 00:04:57,140
変数のフレーズを高くして、関数を何かするようにしましょう。

76
00:04:57,420 --> 00:05:07,380
私はこれらの名前がひどく創造的ではなく、何かをする代わりに私は変えようとしていることを知っています。

77
00:05:07,380 --> 00:05:16,720
私は新しいVARフレーズをさようならにするつもりです。

78
00:05:17,010 --> 00:05:23,350
そして次の行で私はそれを印刷します。

79
00:05:24,270 --> 00:05:30,520
だからここで何が起こると思いますか？

80
00:05:30,570 --> 00:05:33,730
私たちが何かをやるなら、それはさようならを印刷します。

81
00:05:34,830 --> 00:05:36,840
&nbsp;

82
00:05:40,110 --> 00:05:42,100
だから、私たちに教えてくれるのは、Aのための何かの代わりに、さよならと等しいことです。

83
00:05:42,120 --> 00:05:47,570
しかし、それの外ではそれと同等のフレーズはまだ高いです。

84
00:05:47,880 --> 00:05:52,190
だから、ここにvarフレーズを追加することで、さようならと等しい。

85
00:05:52,500 --> 00:05:56,290
これは、ここで定義したものを使うのではなく、新しい変数にします。

86
00:05:56,430 --> 00:06:00,780
それは、この範疇にのみ存在する新しい句変数を、何かが挨拶されているかどうかの中でのみ作ります。

87
00:06:00,780 --> 00:06:07,500
内部には別れがあります

88
00:06:08,250 --> 00:06:12,020
&nbsp;
