1
00:00:01,380 --> 00:00:11,580
歡迎回來，在之前的視頻中我們得知，當關鍵字這不是一個聲明的對象內它的值是全局對象。

2
00:00:11,820 --> 00:00:18,180
讓我們快速演示一下我所聲明的對象意味著萬一前面的視頻還是給你留了一點困惑。

3
00:00:18,180 --> 00:00:21,250
記住這裡的材料是相當具有挑戰性。

4
00:00:21,420 --> 00:00:28,410
因此，嘗試觀看這些視頻了幾次，然後鍵入代碼示例，以加強你的知識。

5
00:00:28,470 --> 00:00:31,310
我要創建一個名為數據的空對象。

6
00:00:31,440 --> 00:00:38,650
我剛才做了聲明一個對象的數據對象並不存在，直到我宣布它。

7
00:00:38,670 --> 00:00:46,610
現在，我要一個屬性附加到這個對象調用教師和設置為LTE的價值。

8
00:00:46,620 --> 00:00:55,150
現在，我們的數據對象，我們宣布與elhi的它裡面的價值的關鍵。

9
00:00:55,230 --> 00:00:59,200
這就是我們的意思，當我們聲明的對象裡說。

10
00:00:59,520 --> 00:01:01,750
如果仍然迷惑你，沒關係。

11
00:01:01,800 --> 00:01:08,820
當我們檢查第二條規則它將使更多的意義，看到了這個關鍵字的對象內。

12
00:01:08,820 --> 00:01:10,780
現在，讓我們完成了第一條規則。

13
00:01:11,010 --> 00:01:18,290
正如你可以在這裡看到，當我們把關鍵字函數這裡面它的價值仍是全局對象。

14
00:01:18,600 --> 00:01:28,590
還記得我們說，全球規則適用，除非這是一個聲明的對象內的關鍵字，但它現在是一個函數內部。

15
00:01:28,950 --> 00:01:36,270
所以，當我們調用函數，這是什麼返回的值是窗口對象。

16
00:01:36,270 --> 00:01:38,340
現在，讓我們來看看最後一個例子。

17
00:01:38,640 --> 00:01:46,060
如果我們附加屬性來此當其值是全局對象的關鍵字，會發生什麼。

18
00:01:46,110 --> 00:01:52,640
請記住，當我說全局對象我的意思是在不同的JavaScript環境的窗口對象。

19
00:01:52,680 --> 00:01:54,410
這個值將發生變化。

20
00:01:54,540 --> 00:01:59,730
但由於我們在瀏覽器中的全局對象是window對象。

21
00:01:59,730 --> 00:02:05,340
現在，讓我們在這個函數的變量，這個函數來看看我們的變量。

22
00:02:05,340 --> 00:02:12,100
我們正在連接屬性到關鍵字這款名為Person和設置它等於艾莉。

23
00:02:12,420 --> 00:02:23,340
由於關鍵字this指的是全局對象什麼我們重視到它成為一個全局變量，這意味著我們可以使用它的功能之外。

24
00:02:23,340 --> 00:02:28,930
這可能看起來像的東西，我們可能想要做但其實這是非常不好的做法。

25
00:02:29,670 --> 00:02:34,680
讓我們快速重溫如何變量和範圍工作的JavaScript。

26
00:02:34,680 --> 00:02:39,780
我要聲明一個變量叫的狗說等於生鏽的價值。

27
00:02:39,810 --> 00:02:50,610
那麼我要做一個叫做溫柔的人內部函數聲明使用var關鍵字叫人變量，並說這等於代碼。

28
00:02:50,790 --> 00:03:00,430
自從我宣布函數中這個變量，我不回它的價值，我不具備的功能之外訪問它。

29
00:03:00,450 --> 00:03:07,410
但是自從我宣布我的狗變量在全球範圍內我可以訪問它無處不在。

30
00:03:08,160 --> 00:03:16,020
現在，我們可以避開不能夠省去我們的函數內部var關鍵字來訪問我們的人變的問題。

31
00:03:16,020 --> 00:03:18,900
然而，這是非常不好的做法。

32
00:03:18,960 --> 00:03:34,370
這是宣布所有的變量，我們希望在我們的代碼頂部的多種功能使用，即使他們沒有一個值，然後在函數以後分配這些值一般最佳實踐。

33
00:03:34,380 --> 00:03:44,400
不幸的是，因為關鍵字this就是全局對象它很容易不小心聲明函數內的全局變量。

34
00:03:44,400 --> 00:03:47,340
讓我們來看一個例子。

35
00:03:47,340 --> 00:03:57,060
我打算做一個函數調用錯誤內部設置屬性的關鍵字這家名為壞主意等於字符串。

36
00:03:57,100 --> 00:03:58,480
哎呦。

37
00:03:58,770 --> 00:04:05,400
現在我要調用該函數，我們可以看到，我有機會到我的壞主意變量。

38
00:04:05,400 --> 00:04:09,390
我不小心剛剛作出了一個全局變量。

39
00:04:09,390 --> 00:04:16,440
值得慶幸的是在5以前版本的JavaScript的一些所謂的嚴格模式加入來幫助我們。

40
00:04:16,440 --> 00:04:21,870
JavaScript開發人員更好地閱讀時，啟用嚴格模式應對。

41
00:04:21,960 --> 00:04:26,460
您可以通過添加使用嚴格的雙引號括起來做。

42
00:04:26,670 --> 00:04:31,760
該關鍵字的值這個當函數內是不確定的。

43
00:04:31,800 --> 00:04:34,530
這不是全局對象。

44
00:04:34,530 --> 00:04:38,870
這意味著，如果我們嘗試將其附著性能上它，我們得到一個類型錯誤。

45
00:04:38,940 --> 00:04:44,270
既然我們不能附加屬性未定義你可能已經看到了這個錯誤不少。

46
00:04:44,280 --> 00:04:51,490
這阻止我們意外創建全局變量，使我們能夠使用JavaScript的最佳實踐。

47
00:04:52,140 --> 00:05:00,860
在這段視頻中，我們回顧了第一條規則確定這個關鍵字，看到我們如何能意外的函數中創建全局變量。

48
00:05:00,870 --> 00:05:06,410
我們也看到了嚴格模式如何能阻止我們在未來的視頻犯這種錯誤。
