1
00:00:00,810 --> 00:00:01,580
다시 오신 것을 환영합니다.

2
00:00:01,710 --> 00:00:04,150
이 비디오에서는 클로저에 대해 이야기 할 것입니다.

3
00:00:04,800 --> 00:00:08,240
클로저는 머리를 감싸는 더 어려운 개념 중 하나입니다.

4
00:00:08,370 --> 00:00:13,570
그러나 일단 당신이 정말로 정의가 무엇인지 이해하면, 나는 그 중 몇 가지를 보았을 때 훨씬 더 쉬울 것입니다.

5
00:00:13,950 --> 00:00:15,720
그러면이 비디오에서 우리는 무엇을 할 것입니까?

6
00:00:15,720 --> 00:00:18,950
우리는 종결이 무엇인지 아닌지 이해할 것입니다.

7
00:00:19,200 --> 00:00:22,460
개인 변수를 에뮬레이션하기 위해 클로저를 사용할 것입니다.

8
00:00:22,680 --> 00:00:26,360
우리는 현실 세계에서 클로저에 대한 몇 가지 유스 케이스를 나열 할 것입니다.

9
00:00:27,210 --> 00:00:28,520
클로저가 무엇입니까?

10
00:00:28,830 --> 00:00:36,180
클로저는 이전에 반환 된 외부 함수에 정의 된 변수를 사용하는 함수입니다.

11
00:00:36,690 --> 00:00:39,540
그래서 나는 그 정의가 지금은별로 의미가 없을 수도 있음을 안다.

12
00:00:39,690 --> 00:00:41,580
바로 지금 예제를 살펴 보겠습니다.

13
00:00:42,030 --> 00:00:47,210
커맨드 옵션 Jay를 누르고 크롬 개발 도구를 열어 보겠습니다.

14
00:00:47,370 --> 00:00:54,420
이제 closure가 함수에서 정의 된 변수를 잘 사용하는 함수 인 경우 외부 함수를 만들어 보겠습니다.

15
00:00:54,630 --> 00:01:02,200
그래서이 함수의 외부 함수 인 amik을 문자열과 동일한 data라는 변수로 만들 것입니다.

16
00:01:02,220 --> 00:01:06,680
클로저는 외부 함수 내부에 있습니다.

17
00:01:06,690 --> 00:01:19,130
Inner와 Inner라는 새로운 함수를 반환하거나 내부 데이터라는 변수를 만들고 내부 데이터는 문자열과 같습니다.

18
00:01:19,140 --> 00:01:20,520
굉장해.

19
00:01:21,570 --> 00:01:28,820
이제이 내부 함수 안에서 문자열을 반환 할 것입니다. 문자열 클로저는 문자열과 함께 있습니다.

20
00:01:28,830 --> 00:01:32,180
굉장해.

21
00:01:32,940 --> 00:01:34,660
이제이 외부 함수를 호출 해 봅시다.

22
00:01:35,400 --> 00:01:36,870
그리고 그것은 우리에게 무엇을 돌려 주어야합니까?

23
00:01:36,990 --> 00:01:40,140
그것은 내부 함수의 정의를 반환 할 것입니다.

24
00:01:40,410 --> 00:01:49,080
그러나이 내부 함수의 내부에서 외부 함수에 정의 된 데이터라는 변수를 사용하고 있습니다.

25
00:01:49,110 --> 00:01:55,280
그래서이 외부 함수를 호출하고 즉시 내부 함수를 호출하면 문자열이 반환됩니다.

26
00:01:55,320 --> 00:01:57,480
클로저는 굉장합니다.

27
00:01:57,480 --> 00:02:11,100
따라서 클로저의 힘을 실제로 볼 수는 없겠지만, 이것은 내부 함수의 내부에서이 데이터 변수와 같은 외부 함수에 정의 된 변수를 사용하는 좋은 예일뿐입니다.

28
00:02:11,100 --> 00:02:22,730
외부 함수가 이미 여기에 알림을 반환하면 외부 함수가 반환되지만 외부 함수가 이미 반환 된 경우에도이 데이터 변수를 사용할 수 있습니다.

29
00:02:23,610 --> 00:02:25,680
다른 예를 살펴 보겠습니다.

30
00:02:25,950 --> 00:02:33,730
여기에 나는 매개 변수 A를 취하는 Outer라는 함수를 가지고 있고 매개 변수 b를 취하는 Inner라는 함수를 반환합니다.

31
00:02:34,320 --> 00:02:43,790
내부 함수는 외부 함수에서 정의 된 변수 A와 외부 함수가 반환 된 시간을 사용합니다.

32
00:02:44,070 --> 00:02:51,010
그래서이 함수 inner는 다른 예제처럼 클로저입니다. 여기서 주목해야 할 몇 가지 사항을 보았습니다.

33
00:02:51,060 --> 00:03:05,400
우리는이 함수가 작동하도록 내부 함수를 반환해야하고 외부 함수를 호출 한 다음 즉시 내부 함수를 호출하거나 내부 함수의 결과를 변수에 저장하고 일반적으로 수행하는 나중에 호출 할 수 있습니다.

34
00:03:05,970 --> 00:03:07,520
빠른 운동을 해보 죠.

35
00:03:07,680 --> 00:03:15,540
이 기능 중 하나에 잠시 동안 클로저 퍼즐 비디오가 포함되어 있는지 파악할 수 있는지 확인하십시오.

36
00:03:15,750 --> 00:03:19,740
이 첫 번째 기능에서 무엇을 생각해 냈습니까?

37
00:03:19,740 --> 00:03:26,400
우리는 내부 함수가 리턴 한 외부 함수에서 찾을 변수를 사용하지 않는다는 것을 알 수 있습니다.

38
00:03:26,550 --> 00:03:31,320
여기 두 번째 예제에서는 클로저가 포함되어 있지 않습니다.

39
00:03:31,320 --> 00:03:41,610
우리는 내부 함수가 내부 함수가 호출 될 때 반환 된 외부 함수에 정의 된 데이터라는 변수를 사용하고 있음을 볼 수 있습니다.

40
00:03:42,030 --> 00:03:47,980
첫 번째 것은 아니지만 두 번째 것은 항상 클로저의 정의로 돌아갑니다.

41
00:03:48,150 --> 00:03:56,650
그리고 내부 함수가 외부 함수에서 변수를 사용하지 않는다는 것을 알게되면 아마도 클로저가 아닙니다.

42
00:03:56,820 --> 00:03:58,520
언제 폐쇄를 사용합니까?

43
00:03:58,920 --> 00:04:04,200
클로저에 대한 유용한 사용 사례는 다른 언어로 된 개인 변수에 대한 개념을 만드는 것입니다.

44
00:04:04,200 --> 00:04:11,520
우리가 private 변수라고 부르는 외부 적으로 수정할 수없는 변수에 대한 지원이 있지만 javascript에는 내장 변수가 없습니다.

45
00:04:11,520 --> 00:04:13,780
고맙게도 폐쇄가 우리를 도울 수 있습니다.

46
00:04:13,800 --> 00:04:23,960
자이안 (Jagan)의 프레스 명령 옵션에서 크롬 개발자 도구에있는이 예제를 살펴보고 카운터를 열고이 카운터 함수 내부에 함수를 작성해 보겠습니다.

47
00:04:23,970 --> 00:04:32,290
count라는 변수를 만들어서 제로와 같게 만들고이 카운터 함수 안에 새로운 함수를 반환 할 것입니다.

48
00:04:32,340 --> 00:04:35,460
이 함수에 이름을 부여하지 않는다는 바로 그 통지가 없습니다.

49
00:04:35,460 --> 00:04:38,360
이러한 기능은 익명으로 처리되기 때문입니다.

50
00:04:38,490 --> 00:04:45,100
따라서이 함수의 이름을 지정하려면이 함수를 계산과 같이 호출 할 수 있지만 필요하지는 않습니다.

51
00:04:45,210 --> 00:04:50,230
그리고이 내부 함수의 내부에서 나는 플러스 카운트를 반환 할 것입니다.

52
00:04:50,250 --> 00:04:58,280
접두사 연산자로 플러스 플러스를 사용하는 이유는 처음으로 내가 호출하는 이유는 1까지 올라갑니다.

53
00:04:58,290 --> 00:05:07,010
이제이 카운터 함수를 C라는 변수와 같게 설정하면 R C가 카운터와 동일하게 저장됩니다.

54
00:05:07,020 --> 00:05:10,130
이제 C를 살펴볼 때 C가 될 것이라고 생각합니까?

55
00:05:10,800 --> 00:05:12,230
우리가 전에 본 것처럼.

56
00:05:12,300 --> 00:05:20,600
함수 정의가 될 것입니다. C를 다시 호출하면 1 씩 증가 된 개수를 반환 할 것입니다.

57
00:05:20,670 --> 00:05:23,060
그것을 다시 반복하자.

58
00:05:23,220 --> 00:05:30,920
하지만 이것에 대해 정말 좋은 점은 현재 아무도 변수 범위에 접근 할 수 없다는 것입니다.

59
00:05:31,050 --> 00:05:35,230
내가 카운트를 액세스하려고하면 카운트가 정의되지 않는다고 말하는 참조를 얻으려고합니다.

60
00:05:35,370 --> 00:05:43,360
그리고 count는 개인 변수이므로 아무도 들어올 수 없으며 count의 값을 변경하면 항상 0이됩니다.

61
00:05:43,440 --> 00:05:46,810
동영상을 일시 중지하고 크롬 콘솔에서이 예를 복사 해 봅니다.

62
00:05:46,910 --> 00:05:50,210
폐쇄가 어떻게 작동하는지 이해하면 많은 도움이됩니다.

63
00:05:50,880 --> 00:05:56,780
이 교실 함수 안에있는 사적인 변수의 또 다른 예를 살펴 보겠습니다.

64
00:05:56,790 --> 00:06:01,770
강사라는 변수가 있습니다.이 변수는 LP라고하는 두 개의 문자열 배열입니다.

65
00:06:01,830 --> 00:06:06,240
이 교실 함수는 두 가지 기능을 가진 객체를 반환합니다.

66
00:06:06,450 --> 00:06:18,500
강사와 강사를 구하십시오 강사가 강사에게 혼란을 표시 할 수있게하려면 매개 변수를 가져 와서 강사의 배열에 추가하는 함수입니다.

67
00:06:18,570 --> 00:06:20,960
그럼 여기에서 폐쇄가 어디에서 일어나고 있는지.

68
00:06:21,180 --> 00:06:24,640
GET 강사가 강사 기능을 추가하는 것에 주목하십시오.

69
00:06:24,720 --> 00:06:33,060
이 함수의 외부에있는이 강사의 변수와이 함수는 모두 여기에서 사용합니다.

70
00:06:33,060 --> 00:06:42,750
따라서이 두 함수는 강사를 얻고 강사를 추가하면 이미 반환 된 외부 함수에 정의 된 변수가 사용됩니다.

71
00:06:42,750 --> 00:06:52,250
여기서 강사가 엘렌 콜트 (Ellen colt)의 배열을 인쇄 할 수있게하고 강사가 저에게 배열에 강사를 추가하고 이론을 돌려 줄 수 있다는 것을 알 수 있습니다.

72
00:06:52,620 --> 00:06:59,920
그러나 다른 변수로 새로운 교실을 만들면 강사가 생겨서 이안이 여기에 없다는 것을 알 수 있습니다.

73
00:07:00,000 --> 00:07:06,810
마지막으로 클로저를 사용하여 강사 변수를 여기에 개인 변수로 지정했습니다.

74
00:07:06,810 --> 00:07:14,530
누구도 교실을 만들 수 없으므로 교실을 만들 때마다 강사가 항상 골목이라고 불릴 것입니다.

75
00:07:14,760 --> 00:07:24,440
그래서 잠시 동안 당신과 붙어있는 것처럼 보입니다. 여기에 작은 예제가 있습니다 만, 여러분이 배우게 될 많은 도구와 기술은 클로저를 꽤 많이 사용합니다.

76
00:07:24,540 --> 00:07:29,050
그래서 그 코드 중 일부를보고있을 때 그 클로저가 어디에 있는지를 알아낼 수 있는지 알아보기 위해 최선을 다하십시오.

77
00:07:29,250 --> 00:07:31,680
물론 당신에게도 지적해야합니다.

78
00:07:31,680 --> 00:07:32,830
그러면 우리는 무엇을 배울 것입니다.

79
00:07:32,850 --> 00:07:41,480
내부 함수가 이미 반환 된 외부 함수에서 선언 된 변수를 사용하고 클로저가 존재하지 않으면 클로저가 존재합니다.

80
00:07:41,490 --> 00:07:56,770
내부 함수를 반환하지 않고 해당 내부 함수가 외부 함수에서 반환 된 변수를 사용하지 않으면 폐쇄 변수를 사용하여 개인 변수를 만들고 논리와 응용 프로그램을 격리하는 더 나은 코드를 작성할 수 있음을 알았습니다.

81
00:07:57,690 --> 00:07:58,830
그리고 그것은 폐쇄를위한 것입니다.
